2009-10-17 79 views
1

我有一個ASP.NET MVC應用程序,它使用jQuery UI對話框進行文件上傳。一切工作正常加載與正確的內容對話框,並在我的單擊事件顯示對話框但是我的問題是,我在我的控制器操作方法中處理動作後,我不會返回到我的對話框,因爲我期望ajax喜歡打電話來表現。我的對話框是「method = post」的表單。我相信這是問題。當我發佈表單時,我不再有對話框的上下文。如果我從表單標籤中刪除「method = post」,那麼我的控制器操作中將找不到404。我會說,我已經嘗試過各種方法來完成我想要完成的任務,但是每種方法都沒有用於某種原因。最初我嘗試了。$(post)方法來激發我的控制器動作,但發現當我試圖在我的控制器動作中處理它時,Request.Files沒有被設置。我也嘗試使用Html.BeginForm而不是HTML,但是我遇到了不返回到對話框的相同問題。最終的結果是一個空白的瀏覽器頁面,其中包含單詞Success,這是我的操作方法的返回。我最近的嘗試是使用jquery方法.ajaxForm。這會調用我的操作,並且有要上傳的文件路徑名稱,但它也不會返回到對話框。這是我的代碼:JQuery文件上傳對話框不會返回到MVC控制器動作對話框

ASPX:

onClickButton: function() { 
    var data = $("#equipgrid").getRowData(curRow); 
    jQuery('#img_dialog').load("/EquipTrack/GetEquipImages/" + data.equip_id, {}, function (data) { 
     $("#img_results").html(data); 
    }); 


    jQuery('#img_dialog').dialog('open'); 
    return false; 


    $(function() { 
     $("#img_dialog").dialog({ 
      bgiframe: true, 
      width: 540, 
      modal: true, 
      autoOpen: false, 
      resizable: false 
     }) 
    }); 

    $('#imageDlgForm').ajaxForm(function (data) { 
     alert(data); 
     alert("Thank you for your comment!"); 
    }); 

我ASCX(我使用的局部視圖加載對話框內容):

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %> 
<%@ Import Namespace="ULS_Site.Models"%> 


<form id="imageDlgForm" action="/EquipTrack/Upload" >   
<p><input type="file" id="fileUpload" name="fileUpload" size="23"/> </p> 
<p><input type="submit" value="Save" id="btnSave"/></p> 
<p></p> 
<center> 

<ul style="list-style-type:none"> 
<% foreach (var item in ViewData.Model as IEnumerable<image>) %> 
<%{%> 
    <li> 

      <img src="<%= item.image_path %>" alt=" " /> 
    </li> 
<%}%> 
</ul> 
</center> 
<input type="hidden" id="hdnID" name="hdnID" value="38" /> 
</form> 

我的控制器操作c#:

public ActionResult Upload() 
    { 
     foreach (string inputTagName in Request.Files) 
     { 
      HttpPostedFileBase file = Request.Files[inputTagName]; 
      if (file.ContentLength > 0) 
      { 
       string filePath = Path.Combine(HttpContext.Server.MapPath("../Content/equip_images") 
       , Path.GetFileName(file.FileName)); 
       file.SaveAs(filePath); 
      } 
     } 
     return Content("Success"); 
    } 
} 
+0

確定 - 一些添加的信息可能會增加混淆。如果我將這些行註釋掉,它應該如此。 (「#img_results」)。html(data); });}};}}; 問題是我需要加載特定於網格選擇內容的對話框。爲什麼.load方法調用會打破我的對話框。 .load調用應該返回數據嗎?請幫助解決這個問題。 – MikeD

回答

0

通過從.load切換到$ .get它解決了我的問題,並按預期方式處理並返回了我的對話框。

相關問題