有人可以解释一下这是如何运作的吗? (正在使用哪个超载)
@Html.DropDownList("FinancialYearID", "Select FY")
FinancialYearID是视图包中的SelectList。为什么它作为字符串传递?
另外,如何在input元素上添加自定义属性? 添加第三个参数
new { @class = "foo" }
不起作用?
是否可以使用默认助手添加数据属性?
由于
答案 0 :(得分:31)
您正在调用this超载。这将创建一个下拉列表,其中包含名称" FinancialYearID" (这意味着所选值将绑定到名为" FinancialYearID")和"选择FY"的模型或ViewBag属性。作为占位符(空)选择文本。
如果要添加类,则需要DropDown(string, IEnumerable, string, object)
帮助程序:
@Html.DropDownList("FinancialYearID", null, "Select FY", new { @class = "foo" })
在这里,您还可以通过传递IEnumerable
(例如SelectList
)来填充DropDownList,我已经通过了null
。
是的,完全可以传递数据属性。只需用下划线替换连字符:
@Html.DropDownListFor("FinancialYearID", null,
"Select FY", new { @data_something = "foo" })
如果您有一个您要尝试绑定所选值的模型属性,则可以传递一个lamba表达式来指示要绑定的属性,框架将生成相应的name
:
@Html.DropDownList(m => m.FinancialYearID, MySelectList,
"Select FY", new { @data_something = "foo" })
我通常还建议在模型中将SelectList
放在初始GET请求上,而不是使用ViewBag
。
答案 1 :(得分:2)
在您的示例中使用
DropDownList(this HtmlHelper htmlHelper, string name, string optionLabel)
要获得您想要的效果,您应该使用下一个代码:
@Html.DropDownListFor(model => model.FinancialYearID, (SelectList)ViewBag.FinancialYearID, "Select FY", new { @class = "foo" })
(重载是DropDownListFor<TModel, TProperty>(this HtmlHelper<TModel>, Expression<Func<TModel,TProperty>>, IEnumerable<SelectListItem>,
string,
object)
)
或者,如果您的某个SelectList标记为已选中,请使用下一个代码:
@Html.DropDownListFor(model => model.FinancialYearID, (SelectList)ViewBag.FinancialYearID, new { @class = "foo" })
(重载是DropDownListFor<TModel, TProperty>(this HtmlHelper<TModel>, Expression<Func<TModel,TProperty>>, IEnumerable<SelectListItem>,
object)
)
P.S。 不要忘记将ViewBag项目转换为SelectList,因为编译器会认为第二个参数是object。
答案 2 :(得分:1)
可能你可以使用下面的一个。对于传递数据属性,请使用下划线_
,例如new {@data_myname=value}
public static MvcHtmlString DropDownList(
this HtmlHelper htmlHelper,
string name,
IEnumerable<SelectListItem> selectList,
Object htmlAttributes
)
<强> 参数 强>
的HtmlHelper
输入:System.Web.Mvc.HtmlHelper
此方法扩展的HTML帮助程序实例。
名称
输入:System.String
要返回的表单字段的名称。
的SelectList
输入:System.Collections.Generic.IEnumerable<SelectListItem>
用于填充下拉列表的SelectListItem对象的集合。
htmlAttributes
输入:System.Object
包含要为元素设置的HTML属性的对象。
返回值
输入:System.Web.Mvc.MvcHtmlString
一个HTML select元素,列表中的每个项目都有一个选项子元素。