【问题标题】:Adding style to Editor For为编辑器添加样式
【发布时间】:2011-10-13 19:27:30
【问题描述】:

我正在尝试将样式应用于元素的编辑器,但我无法使其工作;我做错了什么?

@Html.EditorFor(model => model.ClienteNuevo)
@Html.ValidationMessageFor(model => model.ClienteNuevo,"" ,new Dictionary<string,     string> { { "style", "width:500px" } })

【问题讨论】:

    标签: c# asp.net asp.net-mvc asp.net-mvc-3 razor


    【解决方案1】:

    由于MVC 5.1,,您可以使用htmlAttributes 作为键传递自定义属性:

    @Html.EditorFor(model => model.ClienteNuevo, 
        new { htmlAttributes = new { @class = "form-control" } })
    

    在较旧的 MVC 版本中无法使用 EditorFor 方法添加 html 属性。
    您应该创建一个自定义editor template 或使用Html.TextboxFor 而不是EditorFor。你应该检查这些主题topic1topic2

    【讨论】:

      【解决方案2】:

      您可以创建自己的 css 类并将其附加到您的编辑器中:

      @Html.EditorFor(model => model.Name, new { htmlAttributes = new { @class = "custom-editor" } })
      @Html.ValidationMessageFor(model => model.Name, "", new { @class = "text-danger" })
      

      【讨论】:

        【解决方案3】:

        EditorFor 调用模板视图而不是输出固定元素,因此它不将 html 属性作为参数。对于您正在做的事情,最简单的解决方法是用另一个元素包围编辑器和验证消息,然后将样式应用于该元素:

        <div style="width: 500px;">
        @Html.EditorFor(model => model.ClienteNuevo)
        @Html.ValidationMessageFor(model => model.ClienteNuevo,"")
        </div>
        

        【讨论】:

          【解决方案4】:

          EditorFor 不允许样式化,因为没有附加属性的参数。这样做的原因是因为 EditorFor 并不总是生成单个元素,因为它可以被覆盖。要为特定类型的元素设置样式,您需要使用要使用的特定编辑器。例如,如果编辑器是一个文本框,只需使用 TextBoxFor 并以这种方式应用样式。

          【讨论】:

            【解决方案5】:
            @Html.EditorFor(model => model.ClienteNuevo)
            @Html.ValidationMessageFor(model => model.ClienteNuevo, "", new { @class = "yourclass" })
            

            希望对你有所帮助

            【讨论】:

              猜你喜欢
              • 2021-01-05
              • 1970-01-01
              • 2011-01-09
              • 2010-11-03
              • 2019-12-23
              • 1970-01-01
              • 2013-11-11
              • 1970-01-01
              • 2013-01-06
              相关资源
              最近更新 更多