HTML助手DropDownList解释

时间:2014-05-29 15:49:31

标签: asp.net asp.net-mvc

有人可以解释一下这是如何运作的吗? (正在使用哪个超载)

@Html.DropDownList("FinancialYearID", "Select FY")

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

另外,如何在input元素上添加自定义属性? 添加第三个参数

new { @class = "foo" } 

不起作用?

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

由于

3 个答案:

答案 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}

MSDN

 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元素,列表中的每个项目都有一个选项子元素。