c# - 如何获得 ASP.NET MVC Ajax 响应以重定向到新页面而不是将 View 插入 UpdateTargetId?

标签 c# ajax asp.net-mvc asp.net-mvc-ajax

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

using (Ajax.BeginForm("Delete", null,
        new { userId = Model.UserId },
        new AjaxOptions { UpdateTargetId = "UserForm", LoadingElementId = "DeletingDiv" },
        new { name = "DeleteForm", id = "DeleteForm" }))
   {
    [HTML DELETE BUTTON]
   }

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

[Authorize]
public ActionResult Delete(Int32 UserId)
{
    UserRepository.DeleteUser(UserId);
    return Redirect(Url.Action("Index", "Home"));
}

但是 Home Controller Index View 正在加载到 UpdateTargetId 中,因此我最终得到了一个页面中的一个页面。我在考虑两件事:

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

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

最佳答案

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

重定向:

return JavaScript("window.location = 'http://www.google.co.uk'");

重新加载当前页面:

return JavaScript("location.reload(true)");

似乎是最简单的选择。

关于c# - 如何获得 ASP.NET MVC Ajax 响应以重定向到新页面而不是将 View 插入 UpdateTargetId?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1538523/

相关文章:

c# - SQLiteException-SQLite错误提供给命令的参数不足

javascript - 根据位置标签填充下拉列表

javascript - ajax 调用正在堆叠

c# - 在 Entity Framework 中分离和附加对象时出错

c# - MVC Dropdownlist 未验证并发出警告

C# 如何在 winforms 应用程序中隐藏光标?

c# - 当参数计数小于 List.Count 时出现 FindLastIndex ArgumentOutOfRangeException

c# - 如何获取 BIML 脚本中的输出列列表 - 基于列的生成

php - 将变量从 javascript 传递到 php

asp.net-mvc - 路由匹配后去除多余的路由值