2010-11-02 33 views
13

默认为在`Html.EditorFor`上覆盖类

<%: 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模板?

感谢您的帮助。

回答

11

通过EditorFor方法使用内置编辑器模板时,无法自定义发出的类属性的值。它硬编码的类值(可以在这里找到更多的信息:http://bradwilson.typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-3-default-templates.html

你有两个选择:

  1. 编写支持额外的功能自定义的模板。看看这里的更多详细信息:http://bradwilson.typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-4-custom-object-templates.html

  2. 进程EditorFor方法的输出:

<%: new HtmlString(Html.EditorFor(m=>m.ConfirmationHeadline).ToString() 
     .Replace("class=\"text-box single-line\"", 
       "class=\"text-box single-line span-11 last\"")) %> 
+1

,我结束了使用'<%:Html.TextBox( “ConfirmationHeadline”,空,新{@class =“span-11 last”})%>感谢您的链接。 – balexandre 2010-11-02 18:59:09

+0

这是否仍然在mvc4中工作? – Nikos 2012-12-15 19:51:13

2

asp.net的MVC创建了一个名为的site.css在内容文件夹中的文件。在那里你可以看到默认情况下文本框类被设置为30em的宽度。将其重置为像15em这样的清晰度。单线类似乎没有在任何地方定义。

+1

我总是抛弃site.css! – Nikos 2012-12-15 19:45:15

1

您可以使用TextBoxFor代替

+2

只是为了确定,你知道'EditorFor'和'TextboxFor'的区别吗?您可以[在此检查](http://stackoverflow.com/questions/4826173)以获得快速解答。 – balexandre 2013-01-23 22:49:26

0

我有这个同样的问题,不喜欢任何解决方案上面。我也发现了一个类似的帖子here,但我也不喜欢这些解决方案。经过一些工具之后,我发现了一些我喜欢的东西,这让我继续使用编辑模板(这是您应该尽可能利用的东西)。我发布了解决方案here

5

在MCV 5.1中,您可以利用htmlAttributes。工程就像一个魅力...

@Html.EditorFor(model => model.Name, new { htmlAttributes = new { @class = "form-control", placeholder = "Enter your Name" } }) 
-2

尝试阅读的布拉德的例子所有部件此代码后

@Html.Raw(
    Html.EditorFor(m => m.DataInicial).ToString() 
    .Replace(
     "\"text-box single-line\"", 
     "\"form-control text-box single-line\"")) 
+4

你最好补充一些解释。 – lpratlong 2014-06-05 12:56:21

+0

审查低质量的帖子:按照@Ipratlong的建议。由于审核原因,目前形式的这个答案可能会被删除。 – ElmoVanKielmo 2014-06-05 13:16:13