Asp.net mvc 3 MVC 3上传文件-控制器中的空文件

Asp.net mvc 3 MVC 3上传文件-控制器中的空文件,asp.net-mvc-3,c#-4.0,file-upload,asp.net-mvc-controller,Asp.net Mvc 3,C# 4.0,File Upload,Asp.net Mvc Controller,我不知道我遗漏了什么,但我需要用C#MVC3上传一个文件。我按照SO中的说明操作,但文件总是空的 以下是我的实际测试代码: HTML @using (Html.BeginForm("Prc", "Upload", FormMethod.Post, new { enctype = "multipart/form-data" })) { <input type="file" name="file" id="file" /> <input type="submit" va

我不知道我遗漏了什么,但我需要用C#MVC3上传一个文件。我按照SO中的说明操作,但文件总是空的

以下是我的实际测试代码:

HTML

@using (Html.BeginForm("Prc", "Upload", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
   <input type="file" name="file" id="file" />
   <input type="submit" value="submit" />
}
运行web应用程序时,我附加一个文件,然后单击提交。但是当我到达
控制器
时,
文件
对象是
null
。始终
null
。我尝试了一个
XML
文件、一个
JPEG
文件和一个
GIF
文件,但都不起作用

除了这些代码之外,我还应该配置其他东西吗


谢谢

在MVC中,您需要使用
HttpPostedFileBase
而不是
HttpPostedFile

[HttpPost]
public ActionResult Prc(HttpPostedFileBase file)
{
    //...
}

在MVC中,您需要使用
HttpPostedFileBase
而不是
HttpPostedFile

[HttpPost]
public ActionResult Prc(HttpPostedFileBase file)
{
    //...
}

还有一件事可能会把你绊倒

使用asp.net mvc 3 razor,我惊讶地发现传递给控制器方法的HttpPostedFileBase变量的名称必须与视图上文件输入标记的id和名称匹配。否则,asp.net会为HttpPostedFileBase变量传递null

例如,如果文件输入如下所示: 您的控制器方法如下所示: 公共操作结果上载文件(HttpPostedFileBase文件)


“filey”变量将为NULL。但是在控制器方法中将“filey”重命名为“filex”,它会成功地发布文件。

还有一件事可能会让您绊倒

使用asp.net mvc 3 razor,我惊讶地发现传递给控制器方法的HttpPostedFileBase变量的名称必须与视图上文件输入标记的id和名称匹配。否则,asp.net会为HttpPostedFileBase变量传递null

例如,如果文件输入如下所示: 您的控制器方法如下所示: 公共操作结果上载文件(HttpPostedFileBase文件)


“filey”变量将为NULL。但是在控制器方法中将“filey”重命名为“filex”,它会成功地发布文件。

Tom,很好的调用。你的帖子刚刚帮我摆脱了几个小时的麻烦。是的,我也是!我被卡住了,就是这件蠢事!谢谢汤姆,你叫得好。你的帖子刚刚帮我摆脱了几个小时的麻烦。是的,我也是!我被卡住了,就是这件蠢事!谢谢