2013-08-21 20 views
2

我已經完成了使用表單上傳照片到MVC(照片作爲參數發送到AJAX CALL)控制器的測試,現在需要做同樣的事情但修改:表單enctype =「multipart/form-data」不工作

的作品原始來源是:從控制器

<form action="/Home/Upload" method="post" enctype="multipart/form-data"> 

<label for="photo">Photo:</label> 
<input type="file" name="photo" id="photo" /> 

<input id="uploadbtn" type="submit" value="Upload" /> 
</form> 

和行動代碼:

[HttpPost] 
    public ActionResult Upload(HttpPostedFileBase photo) 
    { 
     // Verify that the user selected a file 
     if (photo != null && photo.ContentLength > 0) 
     { 
      // extract only the fielname 
      var fileName = Path.GetFileName(photo.FileName); 
      // store the file inside ~/App_Data/uploads folder 
      var path = Path.Combine(Server.MapPath("~/C:/poze"), fileName); 
      photo.SaveAs(path); 

     } 
     return Json(new { Success = true }); 
    } 

這工作,但在這種情況下不工作:

@using (Html.BeginForm(null, null, FormMethod.Post, new { enctype = "multipart/form-data" })) 
{ 

    <div class="control-group"> 
    <label class="control-label" for="photo">Photo:</label> 
    <div class="controls"> 
     <input type="file" name="photo" id="photo" /> 
    </div> 
    </div> 
} 

和行動代碼:

public ActionResult EditModule(INT ID, string Description, HttpPostedFileBase photo) 
{ 
    if (photo != null && photo.ContentLength > 0) 
    { 
     // extract only the fielname 
     var fileName = Name + ".png"; 
     // store the file inside ~/App_Data/uploads folder 
     var path = Path.Combine(Server.MapPath("~/Content/Module Previews"), fileName); 
     photo.SaveAs(path); 
    } 

    else 
    { 
     Status += "Error image"; 
     Success = false; 
    } 
} 

當調試EditModule,對照片中的值爲NULL。 我敢肯定,javascript和ajax調用沒有問題。

+2

什麼'javascript和ajax調用? – Zabavsky

回答

6

您已將控制器和操作名稱設置爲空,以便表單不知道要發送到的位置。改變所述第一參數2是操作名稱和控制器名稱:

@using (Html.BeginForm("Upload", "Home", FormMethod.Post, 
            new { enctype = "multipart/form-data" })) 
+0

適合我(但我不想做阿賈克斯)。 –

2

當調試EditModule,對於照片中的值是NULL。我敢肯定,沒有問題的JavaScript和Ajax調用

你不能上傳與Ajax的二進制文件。您必須使用<IFRAME>或Flash插件。

看到這個答案的詳細資料:https://stackoverflow.com/a/6462673/70386

0

當你把行動和控制器空,MVC使用當前的操作和控制。