Ajax 生成部分视图的操作实现必须替换整个页面。如何重定向?

Ajax 生成部分视图的操作实现必须替换整个页面。如何重定向?,ajax,asp.net-mvc-3,Ajax,Asp.net Mvc 3,这是一个部分假设性的问题,因为我目前实际上不需要这样做。我只是想我可能会 我的MVC3应用程序有一个页面,该页面包含使用MVC3 Ajax和AjaxHelper.BeginForm()刷新的部分视图。一切都很好 但是,生成部分视图的操作可能会意识到,用户需要发送到完全不同的页面,而不是看到部分视图的刷新。换句话说,操作方法不需要返回部分视图结果,而需要返回重定向结果或常规视图 毫无疑问,这是行不通的:当签名调用PartialViewResult时,尝试返回RedirectResult将无法编译

这是一个部分假设性的问题,因为我目前实际上不需要这样做。我只是想我可能会

我的MVC3应用程序有一个页面,该页面包含使用MVC3 Ajax和
AjaxHelper.BeginForm()
刷新的部分视图。一切都很好

但是,生成部分视图的操作可能会意识到,用户需要发送到完全不同的页面,而不是看到部分视图的刷新。换句话说,操作方法不需要返回
部分视图结果
,而需要返回
重定向结果
或常规
视图

毫无疑问,这是行不通的:当签名调用
PartialViewResult
时,尝试返回
RedirectResult
将无法编译


那么如何才能做到这一点呢?为了便于讨论,我们假设只有在部分视图中的信息发布回服务器之后,才能在服务器端做出必要的决定

首先,定义返回
ActionResult
的方法,这将允许您根据需要返回
PartialViewResult
重定向结果


其次,在
BeginForm()
方法调用中提供回调函数。如果AJAX调用的结果不是HTTP 200,则将运行
OnFailure
回调,然后您可以使用该回调解析重定向响应并执行重定向。

首先,定义返回
操作结果的方法,这将允许您根据需要返回
部分视图结果
重定向结果


其次,在
BeginForm()
方法调用中提供回调函数。如果AJAX调用的结果不是HTTP 200,则将运行
OnFailure
回调,然后您可以使用该回调解析重定向响应并执行重定向。

谢谢!发帖后,我还阅读了一个单独的Ajax调用的建议,以确定需要返回的内容,然后根据需要执行Ajax调用或重定向;这将消除视图中单个BeginForm()调用的简单性,但如果您在6个月后回来修复一个bug,可能会更容易理解。谢谢!发帖后,我还阅读了一个单独的Ajax调用的建议,以确定需要返回的内容,然后根据需要执行Ajax调用或重定向;这将消除视图中单个BeginForm()调用的简单性,但如果您在6个月后回来修复一个bug,可能会更容易理解。