Jef*_*ddy 34 razor asp.net-mvc-3
我的项目中有一个枚举,我为这个枚举创建了一个自定义编辑器模板.所以,现在我对具有此枚举类型的属性的任何模型都将呈现下拉列表.
这很好用,但我想用我的下拉列表中的select元素命名属性的名称.这是我的编辑器模板的Razor代码.
@model ItemEnumerations.ItemType
<select id="PropertyNameHere" name="PropertyNameHere">
@foreach (ItemEnumerations.ItemType in Enum.GetValues(typeof(ItemEnumerations.ItemType))) {
<option value="@value" @(Model == @value ? "selected=\"selected\"" : "")>@value.ToString()</option>
}
</select>
Run Code Online (Sandbox Code Playgroud)
所以,在我对select元素id和name属性有'PropertyNameHere'的地方,我希望得到我的模型属性的名称.这是一个例子:
我的型号:
public class MyModel{
public int ItemID {get;set;}
public string ItemName {get;set;}
public ItemEnumerations.ItemType MyItemType {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
我的观点代码:
@model MyModel
@Html.LabelFor(m => model.ItemID)
@Html.DisplayForm(m => model.ItemID)
@Html.LabelFor(m => model.ItemName)
@Html.EditorFor(m => model.ItemName)
@Html.LabelFor(m => model.MyItemType )
@Html.EditorFor(m => model.MyItemType )
Run Code Online (Sandbox Code Playgroud)
我希望我的select元素的名称和id为'MyItemType'.
Jef*_*ddy 58
我在这里的一本书中找到了答案.实际上,它让我接近,但我可以根据我发现的东西谷歌休息.
这是我需要添加到编辑器模板的内容.
@{var fieldName = ViewData.TemplateInfo.HtmlFieldPrefix;}
<select id="@fieldName" name="@fieldName">
Run Code Online (Sandbox Code Playgroud)
Tod*_*odd 23
为了将来参考(旧问题),我发现了这个:System.Web.Mvc.Html.NameExtensions.
使用这些,你可以做类似的事情
<input type=text" name="@Html.NameFor(m => m.MyProperty)">
Run Code Online (Sandbox Code Playgroud)
你会得到的
<input type=text" name="MyProperty">
Run Code Online (Sandbox Code Playgroud)
此扩展类中还有其他几个相关的帮助程序.但是,此方法不仅仅是获取属性名称.例如,您可以使用m.MyProperty.MySubProperty,并获得有效的HTML名称以进行发布.
| 归档时间: |
|
| 查看次数: |
24765 次 |
| 最近记录: |