我喜欢
的清洁度using (Html.BeginForm())
并且讨厌添加HTML属性需要指定控制器,操作和表单方法。
using (Html.BeginForm("Action", "Controller", FormMethod.Post,
new { id = "inactivate-form" })
有没有办法使用Html.BeginForm
并为表单指定HTML属性,而无需手动连接其他所有内容?
答案 0 :(得分:16)
为什么你不只是使用普通的HTML?
<form id="inactivate-form" method="post" >
</form>
答案 1 :(得分: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 } });
}
用法然后变成
using(Html.BeginIdedForm("inactiveate-form"))
答案 2 :(得分:0)
类似于@nick-olsen's answer,将null
用作操作/控制器参数:
@Html.BeginForm(null, null, FormMethod.Post, new Dictionary<string, object>() {{ "id", id }}
BeginForm
方法最终调用System.Web.Mvc.RouteValuesHelpers.MergeRouteValues
,如果它们RequestContext.RouteData
回发到与同一动作/控制器相同的位置,则从null
查找动作和控制器名称。表单是从中创建的。