无法使用Html.BeginForm为表单指定属性

时间:2016-08-23 23:10:19

标签: asp.net-mvc html.beginform

我的表单以Html.BeginForm()辅助方法开头:

 @using (Html.BeginForm(
       null,null, new { @id = "MaintenanceForm", @class = "datatable", @nonvalidate="nonvalidate" }
    ))

,表单呈现为:

<form action="(controller's name)/(current action's name)/MaintenanceForm?class=datatable" method="post">

未分配id,class和nonvalidate等属性。另外我不想要默认的Http方法。我该怎么办?

1 个答案:

答案 0 :(得分:1)

您当前的代码与BeginForm方法的下方重载匹配

public static MvcForm BeginForm(
    this HtmlHelper htmlHelper,
    string actionName,
    string controllerName,
    object routeValues
)

此处的第三个参数是路径值的对象。这些将作为查询字符串键值添加到表单的action属性值中。这就是你将这些大网址视为动作属性值的原因。

如果要指定html属性( Id,class 等),请使用此重载,其中第四个参数采用html属性。第三个参数是FormMethod。

public static MvcForm BeginForm(
    this HtmlHelper htmlHelper,
    string actionName,
    string controllerName,
    FormMethod method,
    object htmlAttributes
)

这应该有用。

@using (Html.BeginForm("Create", "Post",FormMethod.Post, 
       new { @id = "MaintenanceForm", @class = "datatable", @nonvalidate = "nonvalidate" }))
{

}

CreatePost替换为您的操作方法名称和控制器名称。