2011-11-18 57 views
0

我想在MVC中實現文件上傳邏輯,我的視圖(cshtml)將包含類似這樣的內容。視圖和控制器中的文件上傳邏輯(MVC3)

<div id="dialog" title="Upload files"> 
       <p><input type="file" id="fileUpload" name="fileUpload" /> </p> 
     <p><input type="submit" value="Upload file" /></p> 
    <% } %> 
</div> 

而我的控制器將有邏輯保存文件。

[AcceptVerbs(HttpVerbs.Post)] 
    public ActionResult FileUpload(HttpPostedFileBase uploadFile) 
    { 
     if (uploadFile.ContentLength > 0) 
     { 
      string filePath = Path.Combine(HttpContext.Server.MapPath("../Uploads"), 
              Path.GetFileName(uploadFile.FileName)); 
      uploadFile.SaveAs(filePath); 
     } 
     return View(); 
    } 

如何鏈接click事件以觸發此控制器?這只是我在網上獲得的示例代碼,請告訴我是否不正確。

感謝, 阿達什訥

回答

0

您將提交表單觸發這個控制器動作,就像MVC模式的工作原理。

在視圖中,你應該把這個HTML中像下面這樣的形式:

@using (Html.BeginForm("FileUpload", "<ControllerNameHere>", FormMethod.Post, new { enctype = "multipart/form-data" })) 
{ 
     <p><input type="file" id="fileUpload" name="fileUpload" /> </p> 
     <p><input type="submit" value="Upload file" /></p> 
} 

這將觸發你的控制器。 我不知道如何使用該文件作爲參數。我通常在我的控制器中使用屬性。

+0

使用Request.Files似乎是一個更好的主意,示例代碼請使用該:) – KeenUser

+0

這只是一個文件集合,以便: '如果(Request.Files.Count> 0) \t \t \t { \t \t \t \t的foreach(HttpPostedFileBase在Request.Files文件) \t \t \t \t { \t \t \t \t \t //做你的文件的東西 \t \t \t \t} \t \t \t \t \t \t \t}' – Mike

+0

謝謝你,在這種情況下,我的控制器將不接受任何參數。我會在action方法[AcceptVerbs(HttpVerbs.Post)] 之前需要這行嗎? – KeenUser