EditorTemplate或DisplayTemplate中的TextBoxFor

时间:2011-09-08 02:09:08

标签: css asp.net-mvc-3 c#-4.0

在我们的项目中,我们在许多地方使用TextBoxFor。 我们想在任何地方设置TextBoxFor的高度和宽度,因为我们已经完成了这个。

<%= Html.TextBoxFor(x => x, new { @class = "TextBoxFor" } ) %>  


.TextBoxFor
{
    height:30px;
    width:250px; 
    font-family:@Batang;   
    font-size:20px; 
    font-weight: bold;
}

是否可以将<%= Html.TextBoxFor("", new { @class = "TextBoxFor" } ) %>放在EditorTemplate / DisplayTemplate的某个地方,而在其他地方,我们就像这样调用

<%= Html.TextBoxFor(x => x) %> 

这意味着我们没有指定css类名。所以很容易维护。 有任何想法吗。感谢

更新,我创建了一个静态助手,但它有错误..

public static MvcHtmlString CustomTextBoxFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, object htmlAttributes) 
{ 
  return htmlHelper.CustomTextBoxFor<TModel, TProperty>(expression, new { @class = "TextBoxFor" }); 

}



<%: Html.CustomTextBoxFor(m => m.Name) %> 

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

是的,但您也可以创建自己的Html帮助器,然后执行Html.MyTextBoxFor(...)。

Check here for examples

您可以下载MVC3Futures文件,其中包含默认模板的模板化版本,您可以将其放入文件夹中。您可以编辑这些以自定义使用的TextBoxFor。但是,您必须在视图中使用@Html.EditorFor(...)而不是TextBoxFor()。请注意,这将影响在安装模板的范围内对EditorFor的所有使用。

顺便说一句,如果你使用MVC3,我强烈建议使用Razor引擎而不是WinForms引擎。它打字较少,而且效率更高,并且它具有你不会在WinForms中获得的功能......并且它不鼓励WinForms思考。

答案 1 :(得分:-1)

如果要为所有文本输入字段应用样式,可以修改MVC模板附带的css样式。

input[type="text"]
{
    border: 1px solid #ccc;
    padding: 2px;
    font-size: 1.2em;
    color: #444;
}