HTML助手DropDownList解释

den*_*den 17 asp.net asp.net-mvc

有人可以解释这是如何工作的吗?(正在使用哪个过载)

@Html.DropDownList("FinancialYearID", "Select FY")
Run Code Online (Sandbox Code Playgroud)

FinancialYearID是视图包中的SelectList.为什么它作为字符串传递?

另外如何在输入元素上添加自定义属性?添加第3个参数

new { @class = "foo" } 
Run Code Online (Sandbox Code Playgroud)

不起作用?

是否可以使用默认助手添加数据属性?

谢谢

Ant*_*t P 31

你调用这个过载.这将创建一个名为 "FinancialYearID" 的下拉列表(这意味着所选值将绑定到名为"FinancialYearID"的模型或ViewBag属性)和"选择FY"作为占位符(空)选择文本.

如果要添加类,则需要DropDown(string, IEnumerable, string, object)帮助程序:

@Html.DropDownList("FinancialYearID", null, "Select FY", new { @class = "foo" })
Run Code Online (Sandbox Code Playgroud)

在这里,您还可以通过传入我已经传递的IEnumerable(例如a SelectList)来填充DropDownList null.

是的,完全可以传递数据属性.只需用下划线替换连字符:

@Html.DropDownListFor("FinancialYearID", null,
                   "Select FY", new { @data_something = "foo" })
Run Code Online (Sandbox Code Playgroud)

如果您有一个要尝试绑定所选值的模型属性,则可以传递一个lamba表达式来指示要绑定的属性,框架将生成相应的属性name:

@Html.DropDownList(m => m.FinancialYearID, MySelectList,
                   "Select FY", new { @data_something = "foo" })
Run Code Online (Sandbox Code Playgroud)

我还建议将SelectList模型放在初始GET请求中而不是使用ViewBag.