我有一个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 :(得分:3)
有时可能会发生这样的情况:您可能对不同的控件/变量使用了相同的名称,并且可能会相互冲突。
在您的情况下,模型属性名称MethodofPayment
和ViewBag名称methodofpayment
会导致冲突。
尝试将ViewBag名称更改为ViewBag.paymentmode
并尝试使用。
@Html.DropDownListFor(model => model.MethodofPayment, (List<SelectListItem>)ViewBag.paymentmode)
答案 1 :(得分:0)
请确保您只有一个名为“model.MethodofPayment”的控件。
@Html.DropDownListFor(model => model.MethodofPayment, (List<SelectListItem>)ViewBag.methodofpayment)
在你的post方法中使用视图中的名称
[HttpPost]
public ActionResult yourAction(classname ClassModel)
{
}
确保名称“ClassModel”在视图中相同