我讨厌ASP.NET html帮助程序在与POCO属性相同的情况下生成名称和id属性.
大多数开发人员通常使用名称和id的小写值,但我似乎无法在ASP.NET MVC中找到实现此目的的方法.
这是可能吗?
编辑:
我会更具体,我正在讨论的例子,因为似乎有些混乱.
我的模型看起来像这样:
public class Customer { public string FirstName { get; set; } public string LastName { get; set; } }
在我看来,我使用Html herlpers:
@Html.InputFor(m => m.FirstName)
<input type="text" name="FirstName" id="FirstName" value="" />
我讨厌FirstName属性大写.在一个完美的世界中,我想要一种方法来覆盖这个属性值的生成,这样我就可以让它说“firstName”.
解决方法
显示(Name =“abc”)属性会更改Html.LabelFor的输出,以及何时使用EditorForModel和DisplayForModel.它不会影响Html.TextBoxFor的呈现方式,也不应该改变表单字段的id或name属性的呈现方式.如果你真的需要这样做,你必须编写自己的html助手
public static MvcHtmlString LowerTextBoxFor<TModel,TProperty>(this HtmlHelper<TModel> html,Expression<Func<TModel,TProperty>> expr) { StringBuilder result = new StringBuilder(); TagBuilder tag = new TagBuilder("input"); tag.MergeAttribute("type","text"); var lowerPropertyName = ExpressionHelper.GetExpressionText(expr).ToLower(); tag.MergeAttribute("name",lowerPropertyName); tag.MergeAttribute("id",lowerPropertyName); result.Append(tag.ToString()); return new MvcHtmlString(result.ToString()); }
你可以在视图中使用这个html助手.
@Html.LowerTextBoxFor(x=>x.Property1)
请注意,此示例只生成id和name属性.你必须编写其他属性的代码,如不引人注目的属性,甚至是这种方法的其他重载才能有效地使用它