2013-01-21 99 views
0

后视图我Ajax调用NameController\Actionasp.net返回Ajax调用

在这次行动我返回ActionResult - 一个View(model)

有没有什么办法可以将客户端重定向到返回的看法?

现在我看到这个观点只在fiddeler(如返回的内容)

+2

了window.location可以做的伎俩,但你必须返回一个网址,而不是网页的.. – VoidMain

+0

你能展示你的代码吗? – ken2k

回答

0

有没有什么办法可以将客户端重定向到返回的看法?

当然,但为什么你在这种情况下使用AJAX? AJAX的重点是保持在同一页面上,避免重新加载整个HTML。

但是,如果你想你可以做到这一点。例如,您可以让控制器操作有条件地返回包含要重定向到的目标url的JSON结果。然后在AJAX调用的成功回调中使用window.location.href在客户端上执行重定向。

让我们举例说明:

[HttpPost] 
public ActionResult MyAction() 
{ 
    if (SomeCondition) 
    { 
     return PartialView(model); 
    } 
    return Json(new { redirectTo = Url.Action("TargetAction", "TargetController") }); 
} 

,然后你的AJAX成功回调中:

success: function(result) { 
    if (result.redirectTo) { 
     // the server returned a JSON result => let's redirect to the target url 
     window.location.href = result.redirectTo; 
    } else { 
     // The server returned a partial view => let's update some portion of the DOM 
     $('#result').html(result); 
    } 
}