2011-03-13 66 views
0

這裏是我的問題:如何管理時,在MVC AJAX響應的jQuery的對話框

jQuery的對話,我有以下代碼中:

<%:Ajax.ActionLink("Yes", "SendClaim", "Claim", new { id = Model.ExpenseId }, new AjaxOptions { UpdateTargetId = "dialog" }, new { @class = "button" })%> 

當東西在控制器出現故障基於角色的我返回替換現有對話框的局部視圖(請參見UpdateTargetId = "dialog")。

當一切工作我想做一個重定向到另一個頁面(所有索賠的指數),停止對該用戶進行額外的操作,但是這整個頁面是jQuery的對話框內呈現由於它是用一個Ajax請求更新ID。

解決問題的正確方法是什麼?

回答

1

我是一個新手,但我發現我有更多的控制與以下方法,而不是使用Ajax.ActionLink。希望這有助於我理解你想做的事。

索賠控制器:

[AcceptVerbs(HttpVerbs.Post)] 
public Json Send(int expenseId) 
{ 
// Check user stuff 
if(valid) 
// do stuff 
    return new Json(true, JsonRequestBehavior.AllowGet); 
else 
    return new Json(false, JsonRequestBehavior.AllowGet); 
} 

jQuery的

function submitClaim() { 
    $.ajax({ 
         url: "/Claim/Send", 
         type: "POST", 
         dataType: "json", 
         data: { 'expenseId': <%=Model.ExpenseId> }, 
         success: function (data) { 
          if(data) { // if successful, redirect 
           document.location = "Claim/Index"; 
          } 
          else { //load your partial view into your dialog 
           $("#idOfYourDialog").load('Claim/Error/'); 
          } 
         }, 
          error: function (xhr) { } 
         }); 
} 

HTML

<a href="javascript:submitClaim()">Submit</a> 
0

返回「一切OK」對話框,並有以下的javascript當用戶點擊OK按鈕:

function redirect() { 
    document.location = "<%:(String)ViewBag.Redirect %>"; 
} 

$(document).ready(function() { 
    $(".ui-dialog-titlebar-close").click(function() { 
     redirect(); 
    }); 
}); 

似乎不可避免的 - 你似乎無法做一個RedirectToAction當控制器操作的調用從Ajax.ActionLink作爲響應將被卡入到updatetargetid。

+0

不會接受這個作爲回答,只是還沒有櫃面其他人可以拿出一個更好的主意。 – Chris 2011-03-13 14:29:47