asp.net-mvc-5 - 为什么我的 DropDownListFor 的默认值不能正常工作?

标签 asp.net-mvc-5 html.dropdownlistfor

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

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

知道为什么吗?

更新

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

@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?

关于asp.net-mvc-5 - 为什么我的 DropDownListFor 的默认值不能正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21077009/

相关文章:

javascript - 当用户在引导模式对话框之外单击时如何捕获事件?

paypal - 信用卡下拉列表

c# - ASP.NET MVC5 在用户注册时自动填充第二个表

javascript - 使用 select 选项仅显示第一个 <td> 的所需值 =""的表行

asp.net-mvc - 如何获得强类型的 DropDownList 以绑定(bind)到控件 Action

asp.net-mvc-3 - ASP.NET 4.3 脚手架 : Add Controller vs Add View - different behavior?

c# - 检查对象是否为空

asp.net-mvc - 如何将 MVC 5 IdentityModels.cs 移动到单独的程序集中

c# - 在 Html.DropDownList Helper 中设置默认值

c# - ASP.NET MVC + 填充下拉列表