HttpPostedFileBase始终保持为空mvc

时间:2013-10-17 07:49:04

标签: asp.net-mvc-4 httppostedfilebase

我知道有很多像这样的问题,但是我把它们全部读出来并且它们无效解决了我的问题。下面我将在我的视图和控制器中显示我的代码,以便您可以了解我的代码。

View :
<td><% using (Html.BeginForm("Index", "Home", FormMethod.Post, new {enctype = "multipart/form-data"})) { %>
<%: Html.ValidationSummary(true) %>
                <div id="section1"> 
    <div class="editor-label">
        <%: Html.LabelFor(model => model.Name) %>
    </div>
<label for="file">Filename:</label>
        <input type="file" name="myfile" id="File5" value="Choose File Banner1" />
     <p>&nbsp;</p>

And here is my controller:
[AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Index(HomeModel model, string submitButton, HttpPostedFileBase myfile)
    {

我无法弄清楚问题是什么问题..有人可以帮我吗

6 个答案:

答案 0 :(得分:10)

我也有同样的问题,我在寻找答案时最终到了这里。我忘记了表单定义中的enctype参数

@using (Html.BeginForm("Index", "Home", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
// form
}

答案 1 :(得分:0)

之前我遇到过同样的问题, 我不得不从文件输入中删除值以使其工作:

<input type="file" name="myfile" id="File5" />

答案 2 :(得分:0)

此问题有多种原因:

  • 您未在enctype代码
  • 上指定<form>属性
  • 您没有为name代码
  • 提供<input type="file">属性
  • 您在另一个<form>
  • 中嵌套了<form>个标记

如果这些都不是您的问题,这对我有用:向您的视图模型添加HttpPostedFileBase属性(或使用该属性创建视图模型)。

查看模型

public class MyViewModel
{
    public HttpPostedFileBase MyFile { get; set; }
}

<强>控制器

public ActionResult Index()
{
    return View(new MyViewModel());
}

[HttpPost]
public ActionResult Index(MyViewModel viewModel)
{
    HttpPostedFileBase file = viewModel.MyFile;

    if (file != null && file.ContentLength > 0)
    {
        // Your code here
    }
}

答案 3 :(得分:0)

在视图中,在enctype附近尝试使用html属性“@data_ajax =”false“”

(Html.BeginForm("Index", "Home", FormMethod.Post, new {enctype = "multipart/form-data", @data_ajax = "false" }))

答案 4 :(得分:0)

您是否在输入元素中设置了value=""

答案 5 :(得分:0)

我将UI复制到我正在运行的MVC3应用程序中,发现上传部分开始出现同样的错误。我发现页面布局中有一个额外的表单(使其成为嵌套表单)。我把它删除了,一切都很适合我。