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



我有一个强类型视图、一个模型和一个简单的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))

然后操作方法不将文件绑定到模型。

有人知道为什么吗?

因为您还没有将enctype属性添加到表单中:

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

使用Html.BeginForm时,会省略文件附件必须为multipart/form-dataenctype属性。

使用BeginForm的重载,允许设置如下属性:

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

最新更新