mvc 3 Html.EditorFor添加html属性不起作用

时间:2011-07-01 16:57:26

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

我尝试为EditorFor添加html属性

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

但是我得到的任何方式

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

7 个答案:

答案 0 :(得分:17)

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

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

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

答案 1 :(得分:7)

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

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

@Html.EditorFor(model => model.UserName)

答案 2 :(得分:2)

@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,style是第三个属性。如果必须使用@Html.EditorFor(),则必须使用CSS类而不是样式

MSDN

上的

@Html.EditorFor()

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

答案 3 :(得分:1)

而不是使用
  @ Html.EditorFor(model =&gt; model.UserId)
使用
   @ Html.TextBoxFor(model =&gt; model.UserId,new {@Value =&#34; Prabhat&#34;})

答案 4 :(得分:0)

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

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

.userName { min-width:40em; }

然后在我看来:

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

当我没有使用min-width,但宽度时,它不起作用。 鲍勃

答案 5 :(得分:0)

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

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

答案 6 :(得分:-2)

您可以在.css中创建样式类,如

.userName
{
   width: 150px;
}

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

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