2010-06-15 94 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(); 
} 

請嘗試,讓我知道你的結果