2014-09-18 61 views
3

默认选定的项目我有一个DropDownListFor绑定到模型成员以及可供选择的项目列表。绑定到这个成员的作品,但我似乎无法弄清楚是如何显示页面加载时模型的当前值。DropDownListFor从模型

查看

@Html.DropDownListFor(model => model.MethodofPayment, (List<SelectListItem>)ViewBag.statuses) 

控制

List<SelectListItem> statuses = new List<SelectListItem>(); 
statuses.Add(new SelectListItem { Text = "Approved", Value = "Approved" }); 
statuses.Add(new SelectListItem { Text = "Declined", Value = "Declined" }); 
statuses.Add(new SelectListItem { Text = "Pending", Value = "Pending" }); 
ViewBag.ClaimStatus = statuses; 

添加optionLabel参数不工作,并返回一个空值,并在SelectListItem传递作为optionLabel参数也不起作用。

@Html.DropDownListFor(model => model.MethodofPayment, (List<SelectListItem>)ViewBag.methodofpayment, model.MethodOfPayment) 

我希望页面提交相同的值,如果他们不改变列表项。

编辑︰
谢谢你们,它一定是名称冲突。 我搞砸了问我的问题有点,因为我有两个下拉列表,我必须复制错误的。

改变的代码:
控制器:

List<SelectListItem> statuses = new List<SelectListItem>(); 
statuses.Add(new SelectListItem { Text = "Approved", Value = "Approved" }); 
statuses.Add(new SelectListItem { Text = "Declined", Value = "Declined" }); 
statuses.Add(new SelectListItem { Text = "Pending", Value = "Pending" }); 
ViewBag.ClaimStatuses = statuses; 

查看:

@Html.DropDownListFor(model => model.ClaimStatus, (List<SelectListItem>)ViewBag.ClaimStatuses) 

它制造多和它的作品。

+0

你的'MethodofPayment设定值相同'在模型绑定到视图之前的模型中,还是null? – 2014-09-18 21:02:23

回答

3

有时可能会发生这样的情况,您可能已经为不同的控件/变量使用了相同的名称,并且它们可能会相互冲突。

在你的情况下,模型属性名称MethodofPayment和您的ViewBag名称methodofpayment导致冲突我猜。

尝试将您的ViewBag名称更改为像ViewBag.paymentmode之类的东西并尝试。

@Html.DropDownListFor(model => model.MethodofPayment, (List<SelectListItem>)ViewBag.paymentmode) 
0

请确保您有其名称为“model.MethodofPayment”只是一个控制。

@Html.DropDownListFor(model => model.MethodofPayment, (List<SelectListItem>)ViewBag.methodofpayment) 
在您的文章的方法

使用您的视图中的名称

[HttpPost] 
    public ActionResult yourAction(classname ClassModel) 
    { 
    } 

肯定的是,名为“ClassModel”在视图中