如何获得ASP.NET MVC Ajax响应以重定向到新页面,而不是将视图插入UpdateTargetId?

我正在使用Ajax.BeginForm创建一个表单,该表单将对某个控制器操作执行Ajax回发,然后如果该操作成功,用户将被重定向到另一个页面(如果该操作失败,则使用AjaxOptions UpdateTargetId显示一条状态消息)

使用(Ajax.BeginForm(“删除”),null,
新的{userId=Model.userId},
新的AjaxOptions{UpdateTargetId=“UserForm”,LoadingElementId=“DeletingDiv”},
新的{name=“DeleteForm”,id=“DeleteForm”})
{
[HTML删除按钮]
}

如果删除成功,我将返回重定向结果:

[授权]
公共操作结果删除(Int32用户ID)
{
UserRepository.DeleteUser(UserId);
返回重定向(Url.Action(“索引”、“主页”);
}

但是主控制器索引视图被加载到UpdateTargetId中,因此我最终得到了一个页面中的一个页面。我在想两件事:

  1. 要么是我在设计这个
    错误,应该处理这种类型的
    不同的操作(不使用ajax)
  2. 而不是返回重定向
    结果,返回一个具有
    其中的javascript执行
    在客户端重定向

有人对#1有意见吗?或者,如果#2是一个好的解决方案,“重定向javascript视图”会是什么样子

您可以使用JavascriptResult来实现这一点

要重定向:

返回JavaScript(“window.location=”http://www.google.co.uk'");

要重新加载当前页面,请执行以下操作:

返回JavaScript(“location.reload(true)”;

这似乎是最简单的选择

发表评论