BeginForm html帮助程序不适用于文件上载

时间:2014-11-10 14:54:16

标签: asp.net-mvc file-upload

我有一个强类型视图,一个模型和一个简单的post方法。

模型有一个属性:

public HttpPostedFileBase File { get; set; }

查看内容如下:

<form method="post" enctype="multipart/form-data">
        <input type="submit" name="Put" value="Excel" />
</form>

行动是

[HttpPost]
public virtual ActionResult Method(ModelVM model)
{
   ...
}

我刚刚展示的作品。但是当我将显式表单声明更改为以下代码时:

@using (Html.BeginForm(MVC.SomeController.Actions.ActionNames.Method, MVC.SomeController.Name))

然后action方法不会将文件绑定到模型。

有人知道为什么吗?

2 个答案:

答案 0 :(得分:1)

因为您尚未在表单中添加enctype属性:

@using (Html.BeginForm(MVC.SomeController.Actions.ActionNames.Method,
        MVC.SomeController.Name,
        FormMethod.Post,
        new { enctype = "multipart/form-data" }))
{
    ...
}

答案 1 :(得分:1)

当您使用Html.BeginForm时,它会忽略文件附件必须为enctype的{​​{1}}属性。

使用允许设置如下属性的multipart/form-data重载:

BeginForm