2010-06-15 92 views
0

我在.NET MVC视图上有以下形式:通过MVC上传时为空文件

<form method="post" enctype="multipart/form-data" action="/Video/UploadDocument"> 
<input type="file" id="document1" name="document1"/> 
<input type="submit" value="Save"/> 
</form> 

控制器具有以下被调用的签名:

public ActionResult UploadDocument(HttpPostedFileBase file) { 
    return View(); 
} 

当我在UploadDocument方法内部时,参数'file ' 一片空白。我在桌面上选择了一个有效的文档,并知道它包含文本。为了让这个文件上传工作,我错过了什么?

回答

2

尝试使用

HttpPostedFileBase file = Request.Files["document1"]; 

有可能出错了绑定([Bind()]属性)。

编辑:并使该方法public ActionResult UploadDocument() {}

+0

试过了,它的工作....完全不明白为什么修复它。Wierd。谢谢,虽然! – Josh 2010-06-15 19:49:42

+0

我只有1个想法为什么它开始工作:如果我记住,修改控制器代码后,应用程序必须重新编译以使更改生效。您是否这样做? – 2010-06-15 19:53:48

0

当使参数(文件)的名称和输入元素的名称相等时会发生什么?我记得ASP.NET MVC中的默认模型绑定逻辑使用这个约定。

+0

还是空。将'文件'更改为'文档1',仍然为空。 :( – Josh 2010-06-15 19:43:57

1

这已被回答,但我相信罪魁祸首是您的签名。代替“文件”,请使用“文档1”。

public ActionResult UploadDocument(HttpPostedFileBase document1) 
{ 
    return View(); 
} 

请尝试,让我知道你的结果