BeginForm 和添加属性

如何将 enctype="multipart/form-data"添加到使用 <% Html.BeginForm(); %>生成的表单中?

126958 次浏览

作为 htmlAttritribute 的一部分,例如。

Html.BeginForm(
action, controller, FormMethod.Post, new { enctype="multipart/form-data"})

或者您可以为 action 和 controller 传递 null,以获得与 BeginForm ()相同的默认目标,而不需要任何参数:

Html.BeginForm(
null, null, FormMethod.Post, new { enctype="multipart/form-data"})

也可以对强类型版本使用以下语法:

<% using (Html.BeginForm<SomeController>(x=> x.SomeAction(),
FormMethod.Post,
new { enctype = "multipart/form-data" }))
{ %>

我知道这是旧的,但你可以创建一个自定义扩展,如果你需要创建的形式一遍又一遍:

public static MvcForm BeginMultipartForm(this HtmlHelper htmlHelper)
{
return htmlHelper.BeginForm(null, null, FormMethod.Post,
new Dictionary<string, object>() { { "enctype", "multipart/form-data" } });
}

那么用法就变成了

<% using(Html.BeginMultipartForm()) { %>