为了账号安全,请及时绑定邮箱和手机立即绑定

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

/ 猿问

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

C#
四季花海 2019-12-21 12:54:06

我正在使用Ajax.BeginForm创建一个窗体,它将执行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视图已被加载到UpdateTargetId中,因此我最终在页面中找到一个页面。我在考虑两件事:


我要么在构造这个错误,要么应该以不同的方式处理这种类型的操作(不使用Ajax)。

而不是返回重定向结果,而是返回其中包含JavaScript的视图,该视图在客户端进行重定向。

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


查看完整描述

3 回答

?
皈依舞

您可以使用它JavascriptResult来实现。


要重定向:


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

要重新加载当前页面:


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

似乎是最简单的选择。


查看完整回答
反对 回复 2019-12-21
?
UYOU

您可以返回带有URL的JSON,并在客户端使用JavaScript更改window.location。与从服务器调用JavaScript函数相比,我更喜欢这种方式,我认为这打破了关注点的分离。


服务器端:


return Json(new {result = "Redirect", url = Url.Action("ActionName", "ControllerName")});

客户端:


if (response.result == 'Redirect')

    window.location = response.url;

当然,您可以添加更多的逻辑,因为服务器端可能会出现错误,并且在这种情况下,result属性可以指示这种情况并避免重定向。


查看完整回答
反对 回复 2019-12-21
?
BIG阳

虽然不优雅,但在某些情况下适合我。


控制者


if (RedirectToPage)

    return PartialView("JavascriptRedirect", new JavascriptRedirectModel("http://www.google.com"));

else

   ... return regular ajax partialview

模型


    public JavascriptRedirectModel(string location)

    {

        Location = location;

    }


    public string Location { get; set; }

/Views/Shared/JavascriptRedirect.cshtml


@model Models.Shared.JavascriptRedirectModel


<script type="text/javascript">

    window.location = '@Model.Location';

</script>


查看完整回答
反对 回复 2019-12-21

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信