2011-03-13 59 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