如何在Asp.net MVC 3中使用LIstBoxFor和MultiSelectList生成的多选列表框上设置name属性?

时间:2011-05-09 18:54:19

标签: asp.net-mvc asp.net-mvc-3 razor

以下是我目前在视图中调用助手的方式(使用Razor和C#):

@Html.ListBoxFor(m => m.Measures, new MultiSelectList(Model.Measures, "MsId"), 
new Dictionary<string, object> { { "id", "measureId" } })

这可以很好地设置表单元素中的“id”但是当我尝试做这样的事情时:

@Html.ListBoxFor(m => m.Measures, new MultiSelectList(Model.Measures, "MsId"), 
new Dictionary<string, object> { { "id", "measureId" }, { "name", "measureId" } })

生成的源代码仍然是:

<select id="measureId" multiple="multiple" name="Measures">

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:3)

该名称是从传递的Expression<Func<TModel, TProperty>>参数生成的。传递的属性的名称是使用的,因此在您的情况m => m.Measures中使用名称Measures。这是为了在表单发布到操作时启用模型绑定。

您可以通过将属性名称更改为MeasuresId来更改名称值,或者如果不可能,则可以使用non typed version

@Html.ListBox("measureId", new MultiSelectList(Model.Measures, "MsId"));

答案 1 :(得分:1)

传入:

new { name= "yourname"}

表示ListBoxFor重载中的html属性