3
我有一個表單,可以包含文件,並顯示成功進度條。我的問題是,在MVC控制器我有:MVC RedirectToAction和XMLHttpRequest發送
return RedirectToAction("Complete", new { title = title });
這正好和我是否步,但隨後又回到了JavaScript load事件,除非我添加了一個JavaScript重定向不重定向我執行完整的方法在負載事件偵聽器(uploadComplete):
var xhr = new XMLHttpRequest();
xhr.upload.addEventListener("progress", uploadProgress, false);
xhr.addEventListener("load", uploadComplete, false);
xhr.addEventListener("error", uploadFailed, false);
xhr.addEventListener("abort", uploadCanceled, false);
xhr.open("POST", "/Submit-Recipe", true);
xhr.send(fd);
function uploadComplete(evt) {
//var valueFromController = how do I get a value here?;
//window.location.replace("http://@ConfigurationManager.AppSettings["website"]/SubmitRecipeComplete/" + valueFromTheController);
}
有沒有辦法不用添加JavaScript重定向?如果我確實需要JavaScript重定向,那麼當它需要成爲ActionResult(如果出現錯誤並且我需要重新顯示頁面?)時,如何從控制器傳回變量?
我可以通過添加第二個頁面來解決這個問題,我可以知道「valueFromController」,但是2個窗體有點打破了工作流程。
編輯
我做了什麼,普利文表示,但的GetData()並沒有爲我工作,所以我用這個來代替:
evt.currentTarget.responseText
要確定是否回到我加入這個視圖或內容就在xhr.send(fd)之前;
xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
在控制器我可以然後執行:
if (Request.IsAjaxRequest())
{
return Content(title);
}
RedirectToAction僅用於由控制器,它不重定向返回到Web瀏覽器,即,HTTP 302或HTTP 301 –