2014-09-02 72 views
0

我想用Html表單做一個簡單的文件上傳。在我看來,我有以下幾點:表單操作沒有打到MVC控制器方法

 <form action='@Url.Action("Save", "Order")' method="post" enctype="multipart/form-data" id="attachmentForm"> 
     <div > 
      <label style="text-align: left;">Delivery note:</label> 
     </div> 
     <div style="float:left; "> 
      <input type="file" name="DeliveryNoteFile" id="DeliveryNote" style="width: 400px;" /> 
     </div> 
     <div style="float:right; margin-top:10px; margin-left:5px; margin-bottom:0px;"> 
      @(Html.Kendo().Button() 
       .Name("btnAddAttachment") 
       .HtmlAttributes(new {type = "submit"}) 
       .Content("Submit")) 
     </div>    
    </form> 

現在,這裏是我的控制器方法。控制器名稱:訂單,方法名稱:保存。 爲什麼它沒有按我的控制器方法?

[HttpPost] 
    public ActionResult Save(HttpPostedFileBase file) 
    { 
     if (file != null) 
     { 
      var fileName = Path.GetFileName(file.FileName); 
       var physicalPath = Path.Combine(Server.MapPath("C:\\Attachments"), fileName); 
       file.SaveAs(physicalPath); 

     } 

     return Content(""); 
    } 

請注意,這只是初稿。任何改善這一點的建議也是受歡迎的。

+0

只是看到在控制檯HTML生成... @ Html.Kendo()。Button()。Name(「btnAddAttachment」)。Content(「Submit」) – 2014-09-02 08:56:14

+0

你確定它沒有觸及該方法嗎?或者你的意思是'文件'是空的? – 2014-09-02 08:56:30

+0

根本沒有打到方法 – 2014-09-02 08:57:01

回答

2

我覺得你的情況你按鈕類型不是提交這就是爲什麼它沒有擊中控制器動作只是儘量使提交按鈕這樣:

@(Html.Kendo().Button() 
    .Name("btnAddAttachment") 
    .HtmlAttributes(new {type = "submit"}) 
    .Content("Submit")) 

爲@ AbbasGaliyakot評論就職於用戶在評論部分,所以即時通訊也包括在這裏。

更改控制器動作參數名稱從fileDeliveryNoteFile

+0

@ user3180965 ...嘗試上面的回答會work..if問題仍然存在再評論的ID .. – 2014-09-02 09:09:54

+0

試過改變它,沒有改變。還沒打到方法 – 2014-09-02 10:03:42

+0

@ user3180965 ...只是後我通過上面的回答生成的HTML ..該按鈕生成HTML – 2014-09-02 10:04:56

2

請試試看。這將有所幫助。

@using (Html.BeginForm("Save", "Order", FormMethod.Post, new { enctype = "multipart/form-data", id = "attachmentForm" })) 
{ 
    <div > 
      <label style="text-align: left;">Delivery note:</label> 
     </div> 
     <div style="float:left; "> 
      <input type="file" name="DeliveryNoteFile" id="DeliveryNote" style="width: 400px;" /> 
     </div> 
     <div style="float:right; margin-top:10px; margin-left:5px; margin-bottom:0px;"> 
      @(Html.Kendo().Button() 
       .Name("btnAddAttachment") 
       .HtmlAttributes(new {type = "submit"}) 
       .Content("Submit")) 
     </div> 

} 

而在JS,你需要綁定如下所示的提交按鈕的點擊功能:

$('#btnAddAttachment').bind('click', function() { 
    $('#attachmentForm').submit(); 
}); 

謝謝!

+0

你的答案是正確的,但正如你可以看到提問者使用html表單標籤與url.action這將創建一個正確的行爲表單標記,如果我們採取提交按鈕,那麼就沒有必要提交表單與jquery .. – 2014-09-02 10:38:25

+0

我希望你沒有使用MVC區域,如果需要的話,你需要指定也如下所示:

2014-09-02 10:53:47

相關問題