Html.BeginForm和HTML属性没有指定Controller和Action

ahs*_*ele 22 asp.net-mvc html.beginform

我喜欢清洁

using (Html.BeginForm())
Run Code Online (Sandbox Code Playgroud)

并且讨厌添加HTML属性需要指定控制器,操作和表单方法.

using (Html.BeginForm("Action", "Controller", FormMethod.Post,
  new { id = "inactivate-form" })
Run Code Online (Sandbox Code Playgroud)

有没有办法使用Html.BeginForm和指定表单的HTML属性,而无需手动连接其他所有内容?

Sim*_*Fox 16

为什么你不只是使用普通的HTML?

<form id="inactivate-form" method="post" >
</form>
Run Code Online (Sandbox Code Playgroud)

  • 实际上我发现很难,如果你不使用BeginForm,你将无法使客户端验证工作,否则它将不会"连接". (4认同)
  • 只有在表单被"using(BeginForm())"方法包围时,不显眼的验证才有效. (3认同)

Nic*_*sen 12

您可以创建一个添加"Id-ed"表单的自定义扩展程序:

public static MvcForm BeginIdedForm(this HtmlHelper htmlHelper, string id)
{
    return htmlHelper.BeginForm(null, null, FormMethod.Post, new Dictionary<string, object>() { { "id", id } });
}
Run Code Online (Sandbox Code Playgroud)

用法然后就变成了

using(Html.BeginIdedForm("inactiveate-form")) 
Run Code Online (Sandbox Code Playgroud)