ASP.NET MVC 3,我应该如何使用HtmlHelper.BeginForm分配<form>属性?</form>

时间:2011-09-02 10:01:26

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

我想在ASP.NET MVC 3视图中为使用Html.BeginForm创建的表单分配HTML属性,但似乎我必须使用重载

BeginForm(this HtmlHelper htmlHelper, 
          string actionName, 
          string controllerName, 
          FormMethod method, 
          Object htmlAttributes
)

像这样调用它:

Html.BeginForm(null, null, FormMethod.Post, new {id = "my-form"})

有没有更简单的方法来做到这一点,所以我可以通过例如new {id = "my-form"}Html.BeginForm的唯一参数?

2 个答案:

答案 0 :(得分:8)

  

有没有更简单的方法来做到这一点,所以我可以通过例如new {id =“my-form”}是Html.BeginForm的唯一参数?

不,除非您编写自己的HTML帮助程序,否则没有:

public static class FormExtensions
{
    public static MvcForm MyBeginForm(this HtmlHelper htmlHelper, object htmlAttributes)
    {
        return htmlHelper.BeginForm(null, null, FormMethod.Post, htmlAttributes);
    }
}

然后:

@using (Html.MyBeginForm(new { id = "my-form" }))
{
    ...
}

很遗憾,您无法使用BeginForm作为名称,因为已存在overload with the same signature,其中参数代表routeValues

答案 1 :(得分:0)

编写自己的扩展方法。

public static class MyFormExtensions { 
  public static MvcForm BeginForm(this HtmlHelper htmlHelper, Object htmlAttributes)
  {
     return htmlHelper.BeginForm(null, null, FormMethod.Post, htmlAttributes);
  }
}