2013-07-03 42 views
1

MVC3 DropdownListFor模型属性不绑定到选定值 这是我的看法DROPDOWNLIST不结合模拟财产MVC3

@{var items = new List<SelectListItem>(){ 
          new SelectListItem {Text = "2", Value = "2", Selected = true}, 
          new SelectListItem {Text = "3", Value = "3", Selected = false}, 
          new SelectListItem {Text = "4", Value = "4", Selected = false}, 
          new SelectListItem {Text = "5", Value = "5", Selected = false} 
         }; 

     } 
@Html.DropDownListFor(x => x.InvoiceItem.Count, new SelectList(items, "Value", "Text")) 

InvoiceModel有一个名为InvoiceItem类属性进一步为int类型的属性Count。 count属性始终为0,并未更新为从下拉列表中选择的值。

请帮忙我已经在此花了数小时。谢谢。


谢谢你的回复。但我仍然有这个问题。

我用 @ Html.DropDownListFor(X => x.InvoiceItem.Count,新的SelectList(项目时, “值”, “文本”,2))

也尝试@ Html.DropDownListFor(X = > x.InvoiceItem.Count,new SelectList(items,“value”,“text”,“2”))

Count属性总是0.我在这里丢失了什么。

+0

我想确保我的问题很清楚,下拉列表的默认值为2,但是当我保存它时,与下拉列表关联的模型属性未设置为2.它始终为0。 – user2548196

回答

1

用途:

new SelectList(items, "value", "text", selectedvalue); 

例:

@{var items = new List<SelectListItem>(){ 
           new SelectListItem {Text = "2", Value = "2"}, 
           new SelectListItem {Text = "3", Value = "3"}, 
           new SelectListItem {Text = "4", Value = "4"}, 
           new SelectListItem {Text = "5", Value = "5"} 
          }; 

      } 
    @Html.DropDownListFor(x => x.InvoiceItem.Count, new SelectList(items, "Value", "Text", 2)) 
+0

请进一步建议。我被困在这里。 – user2548196

0

这是因为Model.InvoiceItem.Count(在DropDownListFor第一个参数)的电流值在您的SelectList中重写选择的值。

正是这样,您的视图模型的当前值可用于设置模型错误后的值。

解决这一问题已经张贴Cyber​​drew,你必须使用的SelectList构造函数的第三个参数,其表示默认选择的值:

@Html.DropDownListFor(x => x.InvoiceItem.Count, new SelectList(items, "Value", "Text", 2)) 
+1

我想确保我的问题很清楚,下拉列表中选择了默认值2,但是当我保存它时,与下拉列表关联的模型属性未设置为2.它始终为0。 – user2548196

0

我想通了这个问题。我没有在保存按钮点击事件中将下拉列表发布到控制器。

2

也许你的问题和我的一样。请检查x.InvoiceItem.Count是属性还是字段。如果它是一个字段,发布数据将不会绑定到它。

我的模型

public class SearchReportObject 
{ 
    public string report_type; 
} 

在CSHTML

@Html.DropDownListFor(model => model.report_type, new SelectList(new List<Object>{new { value = "0" , text = "Red" },new { value = "1" , text = "Blue" },new { value = "2" , text = "Green"}} , "value", "text")) 

在后的形式,report_type总有null值。但是当我将report_type从字段更改为像这样的属性时:

public class SearchReportObject 
{ 
    public string report_type{ set; get; } 
} 

它工作正常。