DropDownList用于模型中的默认选定项
本文关键字:默认 用于 模型 DropDownList | 更新日期: 2023-09-27 18:22:20
我有一个绑定到模型成员的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参数不起作用,并且返回null值,并且将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)
把它变成复数,它起作用了。
有时,您可能对不同的控件/变量使用了相同的名称,并且可能会相互冲突。
在这种情况下,Model属性名称MethodofPayment
和ViewBag名称methodofpayment
可能会导致冲突。
尝试将ViewBag名称更改为类似ViewBag.paymentmode
的名称,然后重试。
@Html.DropDownListFor(model => model.MethodofPayment, (List<SelectListItem>)ViewBag.paymentmode)
请确保您只有一个名为"model.Method.Payment"的控件。
@Html.DropDownListFor(model => model.MethodofPayment, (List<SelectListItem>)ViewBag.methodofpayment)
在您的张贴方法中,使用您的视图中的名称
[HttpPost]
public ActionResult yourAction(classname ClassModel)
{
}
请确保视图中的名称"ClassModel"相同