Html.BeginForm并添加属性

时间:2008-10-19 16:10:43

标签: asp.net-mvc

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

3 个答案:

答案 0 :(得分:245)

作为htmlAttributes的一部分,例如

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

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

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

答案 1 :(得分:19)

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

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

答案 2 :(得分:12)

我知道这已经过时但如果您需要反复创建该表单,则可以创建自定义扩展程序:

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()) { %>