默认带
<%: Html.EditorFor(m => m.ConfirmationHeadline) %>
输出是:
<input type="text" value=""
name="ConfirmationHeadline" id="ConfirmationHeadline"
class="text-box single-line">
如您所见,输入已添加class
属性。嗯,这应该不是问题,只需使用
<%: Html.EditorFor(m => m.ConfirmationHeadline, new { @class="span-11 last"}) %>
并且应该有效...... 错误......不!
这将输出完全相同的代码!
但是,Html.TextAreaFor()
如何从中删除类text-box single-line
,以便可以追加我自己的类?我应该编辑任何T4模板吗?
感谢您的帮助。
答案 0 :(得分:11)
通过EditorFor
方法使用内置编辑器模板时,无法自定义发出的类属性的值。它对类值进行了硬编码(此处提供了更多信息:http://bradwilson.typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-3-default-templates.html)
您有两种选择:
编写您自己的支持额外功能的自定义模板。有关详细信息,请查看此处:http://bradwilson.typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-4-custom-object-templates.html
处理EditorFor
方法的输出:
<%: new HtmlString(Html.EditorFor(m=>m.ConfirmationHeadline).ToString()
.Replace("class=\"text-box single-line\"",
"class=\"text-box single-line span-11 last\"")) %>
答案 1 :(得分:5)
在MCV 5.1中,您可以利用htmlAttributes。像魅力一样......
@Html.EditorFor(model => model.Name, new { htmlAttributes = new { @class = "form-control", placeholder = "Enter your Name" } })
答案 2 :(得分:2)
asp.net mvc在内容文件夹中创建一个名为site.css的文件。在那里,您可以看到默认情况下文本框类的宽度设置为30em。把它重置为像15em这样的东西。单行类似乎没有在任何地方定义。
答案 3 :(得分:1)
您可以使用TextBoxFor
代替
答案 4 :(得分:0)
我有同样的问题,并不喜欢上述任何解决方案。我也找到了类似的帖子here,但我也不喜欢这些解决方案。经过一些工具,我找到了我喜欢的东西,这让我继续使用编辑器模板(这是你应该尽可能利用的东西)。我发布了解决方案here
答案 5 :(得分:-2)
试试这段代码
@Html.Raw(
Html.EditorFor(m => m.DataInicial).ToString()
.Replace(
"\"text-box single-line\"",
"\"form-control text-box single-line\""))