为什么DropDownListFor的默认值无法正常工作?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么DropDownListFor的默认值无法正常工作?相关的知识,希望对你有一定的参考价值。

无论出于何种原因,我的html.DropDownListFor的默认值不起作用:

@Html.DropDownListFor(model => model.DomainList,
    new SelectList(Model.DomainList, "DomainId", "Name", Model.SingleDomain.DomainId),
    new { @class = "form-control" })

知道为什么吗?

UPDATE

在下面的答案中,我将我的代码更新为以下内容:

@Html.DropDownListFor(model => model.SelectedDomain, 
    new SelectList(Model.DomainList, "DomainId", "Name", Model.SelectedDomain),
    "Select a Domain", 
    new { @class = "form-control" })
答案

试试这个:

在ViewModel中,添加一个整数来存储选定的域ID:

public int SelectedDomainId { get; set; }

将DropDownListFor更改为:

@Html.DropDownListFor(model => model.SelectedDomainId,
    new SelectList(Model.DomainList, "DomainId", "Name", Model.SingleDomain.DomainId),
    new { @class = "form-control" })

现在,在您的回发后,所选的ID将发布在SelectedDomainId中。

或者,您可以将单个域对象添加到VM(以指示选择了哪个):

public Domain SelectedDomain { get; set; }

并将DropDownListFor更改为:

@Html.DropDownListFor(model => model.SelectedDomain,
        new SelectList(Model.DomainList, "DomainId", "Name", Model.SingleDomain.DomainId),
        new { @class = "form-control" })

我通常使用所选的ID,但我认为要么应该工作

这是另一个很好的例子:

MVC3 DropDownListFor - a simple example?

另一答案

如果有人遇到Html.DropdownList的麻烦,请记住

@Html.DropDownList("Country", ViewBag.Country as List<SelectListItem>) - >不选择默认值

@Html.DropDownList("Countries", ViewBag.Country as List<SelectListItem>) - >选择默认值

有关更多详细信息,请参阅:http://www.binaryintellect.net/articles/69395e7d-7c7c-4318-97f5-4ea108a0da97.aspx

以上是关于为什么DropDownListFor的默认值无法正常工作?的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET @Html.DropDownListFor() 选择的值设置为 true 但提交给控制器时返回 false

Razor Html.DropDownListFor 自动设置选中值

将递增 ID 连接到 @DropDownListFor id 值

如何在MVC 5中使用DropdownListFor在多个DropDownList中选择值

Html.DropdownListFor 未设置所选值

为啥我的方法“DropDownListFor”没有重载?