2015-02-08 27 views
0

我正在嘗試使用Ajax窗體保存圖像。但無法在我的操作中獲取上傳的圖像。 這是我的索引頁,在這個頁面中我正在爲添加項加載partialview。 我Index.Cshtml在MVC中使用Ajax.BeginForm保存圖像4

@Html.Action("_AddOrUpdateItem","Admin") 

我的動作代碼

public PartialViewResult _AddOrUpdateItem(int? itemId) 
     { 
      //Some Code Here 
      return PartialView("_AddItem", item); 
     } 

     [HttpPost] 
     public PartialViewResult AddOrUpdateItem(ToolItem toolItem, HttpPostedFileBase toolItemImage) 
     { 
      ////Some Code Here 
      return PartialView("_AddItem", toolItem); 
     } 
    } 

和我的AJAX形式爲遵循

@using (Ajax.BeginForm("AddOrUpdateItem", "Admin", new AjaxOptions() { HttpMethod = "POST" }, new { enctype = "multipart/form-data" })) 
{ 
    // Some more text boxes here 
    <input type="file" id="ToolItemImage" name="toolItemImage" /> 
    <input type="submit" value="Save" /> 
} 

我有一個鏈接,這同類型的問題,但在我的它不起作用

Upload file using Ajax form

+0

什麼不起作用?如果調試'[HttpPost] AddOrUpdateItem()'方法,它是否會觸發您的操作? – scheien 2015-02-08 19:06:21

+0

是的,它正在隱藏我的動作,但是我的toolItemImage爲null。 – 2015-02-08 19:08:06

+0

您是否使用與您鏈接的問題相同的JavaScript代碼?當涉及到文件時,看起來像'Ajax.BeginForm'很多類似的問題,並且js是魔術棒。任何不使用'Html.BeginForm'的原因,並用你自己的js覆蓋提交? IIRC你也應該把它看作是一個集合,而不是一個單獨的文件,就像在你連接的答案中一樣。 – scheien 2015-02-08 19:20:54

回答

0

這是不可能的加載文件只使用Ajax.BeginForm 沒有額外的js腳本,它們已經在您的鏈接中提供,我無法在您的代碼中看到它。總之,我強烈建議使用Jquery Form Plugin來達到此目的。

+0

form.js只有當我們想要使用代碼 '$('#myForm').ajaxForm(function(){ alert(「Thank you for your comment!」); })來提交表單時才需要。 ' 但我在這裏提交表單。 – 2015-02-08 18:35:41

0

我不知道ASP MVC但submitiing一個表格文件,你必須使用enctype="multipart/form-data">

所以你的表格必須有這樣的事情

<form action"your controller" method="post" enctype="multipart/form-data"> 
<input type="file" id="ToolItemImage" name="toolItemImage" /> 
<input type="submit"> 
</form>