HTML.DropDownListFor中第一个参数的用途是什么?

时间:2015-04-17 05:19:36

标签: c# asp.net-mvc linq razor

我正在阅读有关HTML.DropDownListFor的文档,它说明了以下内容:

public static MvcHtmlString DropDownListFor<TModel, TProperty>(
    this HtmlHelper<TModel> htmlHelper,
    Expression<Func<TModel, TProperty>> expression,
    IEnumerable<SelectListItem> selectList
)

表达式有什么作用?我一直在阅读,并说它将它绑定到一个属性?

我使用了以下代码:

 @(Html.DropDownListFor(x => x.SiteList[0], new SelectList(Model.SiteList, "LocationID", "Description",Model.SiteList[5].LocationID)))

并且该代码的工作原理与:

一样好
 @(Html.DropDownListFor(x => x.SiteList[0].LocationID, new SelectList(Model.SiteList, "LocationID", "Description",Model.SiteList[5].LocationID)))

@(Html.DropDownListFor(x => x.SiteList[0].Description, new SelectList(Model.SiteList, "LocationID", "Description",Model.SiteList[5].LocationID)))

其中SiteList是:

List<Site>

网站是:

public class Site {
    public string LocationID;
    public string Description;
}

我不明白示例中lambda的用途是什么以及如何在输出中使用它?

2 个答案:

答案 0 :(得分:1)

因此,您的模型通常会在列表旁边有一个单独的属性。从列表中选择一个值时,它会设置绑定的属性。

class ListType{
    public string Key { get; set; }
    public string Value { get; set; }
}    

class ViewModel{
     public IEnumerable<SelectListItem> List { get; set; } //This is generated from a list of ListType objects
     public string Selected { get; set; }
}

然后你可以使用:

@Html.DropDownListFor(x => x.Selected, Model.List)

这意味着当回发表单时,Selected属性将具有列表中所选项目的值。

答案 1 :(得分:0)

查看由三个表达式生成的html。在所有情况下,名称和ID都不同。在将所选值绑定到模型的属性时使用这些名称。元素的名称应与发布页面时所选值所要求的属性的名称相同。表达式给出了友好的给元素命名的方法达到目的。