23

我喜欢这里的清洁

using (Html.BeginForm())

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

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

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

4

3 回答 3

15

为什么不只使用纯 html?

<form id="inactivate-form" method="post" >
</form>
于 2009-11-23T22:57:01.397 回答
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")) 
于 2011-10-17T15:44:42.663 回答
1

类似于@nick-olsen 对动作/控制器参数的回答null

@Html.BeginForm(null, null, FormMethod.Post, new Dictionary<string, object>() {{ "id", id }}

BeginForm方法最终调用该方法,如果它们回发到与创建表单相同的操作/控制器,System.Web.Mvc.RouteValuesHelpers.MergeRouteValues则从 中查找操作和控制器名称。RequestContext.RouteDatanull

于 2019-02-05T14:13:09.483 回答