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)

把它变成复数,它起作用了。

DropDownList用于模型中的默认选定项

有时,您可能对不同的控件/变量使用了相同的名称,并且可能会相互冲突。

在这种情况下,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"相同