我正在阅读有关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的用途是什么以及如何在输出中使用它?
答案 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都不同。在将所选值绑定到模型的属性时使用这些名称。元素的名称应与发布页面时所选值所要求的属性的名称相同。表达式给出了友好的给元素命名的方法达到目的。