mvc 3 Html.EditorFor 添加html属性不起作用
Posted
技术标签:
【中文标题】mvc 3 Html.EditorFor 添加html属性不起作用【英文标题】:mvc 3 Html.EditorFor add html attribute not work 【发布时间】: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">
【问题讨论】:
Html attributes for EditorFor() in ASP.NET MVC的可能重复 【参考方案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" )
【讨论】:
以上是关于mvc 3 Html.EditorFor 添加html属性不起作用的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET MVC3 - 带有@Html.EditorFor 的文本区域
MVC 和 Razor 中 Html.TextboxFor 和 Html.EditorFor 的区别