mvc 3 Html.EditorFor添加Html属性无效

本文关键字:Html 属性 无效 添加 EditorFor mvc | 更新日期: 2023-09-27 18:00:49

我尝试为EditorFor 添加html属性

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

但无论如何我都能得到

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

mvc 3 Html.EditorFor添加Html属性无效

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

如果你需要改变的只是宽度的显示,并且你不依赖任何编辑器模板,那么最简单的解决方案是使用TextBoxFor代替

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

我遇到了同样的问题,这解决了它…

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

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

这些自定义与@Html.TextBoxFor()@Html.LabelFor()一起工作。以下代码已经过测试,并且运行正常。

剃刀:

@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和都有效

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

值得一提的是,我也遇到了同样的问题。我使用一个与Narenda V的解决方案略有不同的版本来解决这个问题。

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

.userName { min-width:40em; }

那么在我看来:

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

当我不使用最小宽度,但使用宽度时,它不起作用。Bob

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

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

您可以在.css中创建类似的样式类

.userName
{
   width: 150px;
}

样式可以与html类属性一起应用。

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