如何在MVC3 / 4中为Html.BeginForm()添加一个类属性,保留最小的重载

时间:2012-10-17 01:21:56

标签: asp.net-mvc-3 css3 twitter-bootstrap

我正在将我的应用程序升级到Bootstrap 2.1.1,我需要为许多表单标记添加一个类属性(class =“form-horizo​​ntal”)。问题是,大多数表格使用相当漂亮的

@using (Html.BeginForm()) {

我宁愿保留的格式。获取类属性的明显方法是使用以下重载,例如:

@using (Html.BeginForm("Register", "Account", FormMethod.Post, new { @class = "form-horizontal" })) {

但我宁愿不这样做。向表单添加类属性的最佳方法是什么?

我已经考虑过将 jQuery 文档就绪处理程序用于.addClass(“form-horizo​​ntal”)表单,但我担心用户会看到可怕的'无格式内容的闪存'。

另一种方法可能是使用 less 风格的混合,将.form-horizo​​ntal类添加到所有表单样式规则中,但我还没有用得少,所以我是不确定这个。

任何人都知道解决这个问题的最佳方法吗?

2 个答案:

答案 0 :(得分:21)

根据StanK的建议,以及关于SO的其他一些答案的建议,我创建了一个专门针对Bootstrap表单布局的扩展方法:

public static MvcForm BeginHorizontalForm(this HtmlHelper helper) {
    return helper.BeginForm(null, null, FormMethod.Post, new { @class = "form-horizontal" });
}

允许我使用

@using (Html.BeginHorizontalForm()) {...

这很优雅。

答案 1 :(得分:15)

如何编写一个调用所需重载的自定义帮助器方法,传入'form-horizo​​ntal'?

然后,您的观点将使用@using (Html.BootstrapBeginForm()) {,让您的观点变得更加整洁。