【问题标题】:mvc 3 Html.EditorFor add html attribute not workmvc 3 Html.EditorFor 添加html属性不起作用
【发布时间】:2011-09-26 21:59:25
【问题描述】:

我尝试为 EditorFor 添加 html 属性

 @Html.EditorFor(model => model.UserName, new { style = "width: 100px" })

但是我得到的任何方式

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

【问题讨论】:

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


【解决方案1】:

EditorFor 将覆盖这些属性。有关解决方法,请参阅 Html attributes for EditorFor() in ASP.NET MVC

如果您只需要更改宽度的显示,并且您不依赖任何编辑器模板,那么最简单的解决方法是改用 TextBoxFor

 @Html.TextBoxFor(model => model.UserName, new { style = "width: 100px" })

【讨论】:

  • 这太愚蠢了。为什么要强加这样的开发商。在一切正常之前:(
【解决方案2】:

你可以在.css中创建一个样式类

.userName
{
   width: 150px;
}

样式可以通过html类属性来应用。

@Html.EditorFor(model => model.UserName, new { @class = "userName" })

【讨论】:

  • 添加新的类样式无济于事。因为结果没有添加
  • 试试@Html.TextBoxFor(model => model.UserName, new { @class= "userName" })
【解决方案3】:

不管怎样,我也遇到了同样的问题。我通过使用稍微不同版本的 Narenda V 解决方案解决了这个问题。

我创建了一个这样的类:(注意 - 最小宽度而不是宽度)

.userName { min-width:40em; }

那么在我看来:

@Html.EditorFor(model => model.UserName, new { @class = "userName" })

当我没有使用最小宽度,而是使用宽度时,它不起作用。 鲍勃

【讨论】:

    【解决方案4】:

    如果您需要使用 EditorFor 而不是 TextBoxFor 并且页面上有多个编辑器,但只需要更改特定的宽度...最简单的方法是将 css 样式添加到类 ID,如下所示:

    <style type="text/css">
        input#UserName { width: 100px; }
    </style>
    

    【讨论】:

      【解决方案5】:

      我有同样的问题,这解决了它...

      <style type="text/css">
      #UserName { 
          width: 100px; 
      }
      </style>
      
      @Html.EditorFor(model => model.UserName)
      

      【讨论】:

        【解决方案6】:

        @Html.EditorFor() 根据模型元素动态决定使用的控件类型。

        这些自定义适用于 @Html.LabelFor()@Html.TextBoxFor()。以下代码已经过测试,可以正常运行。

        剃须刀:

        @Html.LabelFor(model => model.UserName, null, new { style = "display: inline;" })
        @Html.TextBoxFor(model => model.UserName, null, new { style = "display: inline;" })
        

        生成的 HTML

        <label style="display: inline;" for="UserName">
        <input name="LastActivityDate" id="UserName" style="display: inline;" type="text" value=""/>
        

        请注意,传递的第二个参数是null,样式是第三个属性。如果必须使用@Html.EditorFor(),那么您必须使用 CSS 类而不是样式

        @Html.EditorFor()MSDN

        注意:代码已经用 MVC4 测试过,希望它对 MVC3 也有效

        【讨论】:

          【解决方案7】:

          而不是使用
          @Html.EditorFor(model => model.UserId)
          使用
          @Html.TextBoxFor(model => model.UserId, new { @Value = "Prabhat" })

          【讨论】:

            猜你喜欢
            • 2015-03-11
            • 1970-01-01
            • 2011-08-04
            • 2023-04-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多