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 的区别

MVC5 @Html.EditorFor:第二个属性问题

MVC Html.EditorFor 不接受标记

c# mvc 表单:如何利用使用 html.editorfor 的好处为简单的反馈表单构建视图?

Html.EditorFor SelectList