【问题标题】:Overwriting the class on a `Html.EditorFor`覆盖 `Html.EditorFor` 上的类
【发布时间】:2011-05-03 23:59:05
【问题描述】:

默认为

<%: 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 模板吗?

感谢大家的帮助。

【问题讨论】:

    标签: asp.net-mvc-2 textinput class-attributes


    【解决方案1】:

    试试这个代码

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

    【讨论】:

    • 你最好添加一些解释。
    • 审查低质量帖子:遵循@Ipratlong 的建议。出于审核原因,当前表单中的此答案可能会被删除。
    【解决方案2】:

    在 MCV 5.1 中,您可以利用 htmlAttributes。像魅力一样工作......

    @Html.EditorFor(model => model.Name, new { htmlAttributes = new { @class = "form-control", placeholder = "Enter your Name" } })
    

    【讨论】:

      【解决方案3】:

      通过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. 处理EditorFor方法的输出:

       <%: new HtmlString(Html.EditorFor(m=>m.ConfirmationHeadline).ToString()
              .Replace("class=\"text-box single-line\"", 
                       "class=\"text-box single-line span-11 last\"")) %>
      

      【讨论】:

      • 在阅读了 Brad 示例的所有部分后,我最终使用了 &lt;%: Html.TextBox("ConfirmationHeadline", null, new { @class = "span-11 last" })%&gt; 感谢您提供的链接。
      【解决方案4】:

      我遇到了同样的问题,不喜欢上述任何解决方案。我还找到了类似的帖子here,但我也不喜欢这些解决方案。经过一些工具,我找到了我喜欢的东西,这让我可以继续使用编辑器模板(这是你应该尽可能利用的东西)。我发布了解决方案here

      【讨论】:

        【解决方案5】:

        您可以改用TextBoxFor

        【讨论】:

        • 只是为了确定,您知道EditorForTextboxFor 之间的区别吗?您可以check it here快速解答。
        【解决方案6】:

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

        【讨论】:

        • 我总是放弃 site.css!
        猜你喜欢
        • 2018-03-19
        • 1970-01-01
        • 1970-01-01
        • 2022-08-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-01-12
        相关资源
        最近更新 更多