代码之家  ›  专栏  ›  技术社区  ›  balexandre

重写“Html.EditorFor”上的类`

  •  13
  • balexandre  · 技术社区  · 14 年前

    默认情况下

    <%: Html.EditorFor(m => m.ConfirmationHeadline) %>
    

    输出为:

     <input type="text" value="" 
            name="ConfirmationHeadline" id="ConfirmationHeadline" 
            class="text-box single-line">
    

    如您所见,输入已经附加了 class

    <%: Html.EditorFor(m => m.ConfirmationHeadline, new { @class="span-11 last"}) %>
    

    而且应该有用。。。 呃。。。不!

    不过,和 Html.TextAreaFor()

    我怎样才能把这个班撤掉 text-box single-line 从那以后我就可以加入我自己的课程了?我需要编辑任何T4模板吗?

    谢谢你的帮助。

    6 回复  |  直到 14 年前
        1
  •  11
  •   p.campbell    11 年前

    当通过 EditorFor 方法。它对类值进行硬编码(更多信息请参见: http://bradwilson.typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-3-default-templates.html

    你有两个选择:

    1. 编写支持额外功能的自定义模板。查看此处了解更多详细信息: http://bradwilson.typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-4-custom-object-templates.html

    2. 处理的输出 编辑

     <%: new HtmlString(Html.EditorFor(m=>m.ConfirmationHeadline).ToString()
            .Replace("class=\"text-box single-line\"", 
                     "class=\"text-box single-line span-11 last\"")) %>
    
        2
  •  5
  •   Adam W    10 年前

    在MCV 5.1中,您可以利用htmlAttributes。就像一个魔咒。。。

    @Html.EditorFor(model => model.Name, new { htmlAttributes = new { @class = "form-control", placeholder = "Enter your Name" } })
    
        3
  •  2
  •   wozza    14 年前

    net mvc在内容文件夹中创建名为site.css的文件。在这里可以看到,文本框类默认设置为30em的宽度。将其重置为更理智的值,比如15em。单行类似乎在任何地方都没有定义。

        4
  •  1
  •   Gelásio    12 年前

    你可以用 TextBoxFor 相反

        5
  •  0
  •   Community CDub    7 年前

    我也有同样的问题,不喜欢上面的任何解决方案。我也发现了一个类似的帖子 here here

        6
  •  -2
  •   lpratlong    10 年前

    尝试此代码

    @Html.Raw(
        Html.EditorFor(m => m.DataInicial).ToString()
        .Replace(
            "\"text-box single-line\"",
            "\"form-control text-box single-line\""))