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