asp.net-mvc - ASP.NET MVC 可以生成具有小写名称和 id 属性的元素吗

标签 asp.net-mvc

我讨厌 ASP.NET html 助手在与 POCO 属性相同的情况下生成 name 和 id 属性。

大多数开发人员通常对 name 和 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”。

我不想将 POCO 属性名称更改为小写。 ASP.NET MVC 框架的大部分内容都是可扩展和可定制的——这是不是呢?

最佳答案

Display(Name = "abc")当我们使用 EditorForModel 和 DisplayForModel 时,属性会更改 Html.LabelFor 的输出。它不会影响 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());
        }

您可以在 View 中使用此 html 助手。
@Html.LowerTextBoxFor(x=>x.Property1)

请注意,此示例仅生成 id 和 name 属性。您必须为其他属性(如不显眼的属性甚至此方法的其他重载)编写代码才能有效地使用它

关于asp.net-mvc - ASP.NET MVC 可以生成具有小写名称和 id 属性的元素吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6749804/

相关文章:

c# - 如何在 ASP.Net MVC 中将列表对象显示到 View ?

c# - 如何在Moq框架中模拟HttpContext(ControllerContext),并进行 session

c# - 无法添加 Controller

jquery - 如何从 View 将 javascript 变量传递给 MVC 中的 Controller

asp.net-mvc - ASP.NET MVC 中的多种表单

asp.net - MVC 4 子目录中的 web.config

c# - MVC Google oauth 与 Azure 网站域问题

c# - 集成身份服务器; Docker 和 MVC 核心(Web 客户端)

javascript - 如何使用 ui.router 和 ASP.NET MVC 在 AngularJS 中处理页面刷新

asp.net - ASP.NET MVC 5 中的基本身份验证