当前位置: 首页 > 面试题库 >

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

范云
2023-03-14
问题内容

我正在使用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中,因此我最终在页面中找到一个页面。我在考虑两件事:

  1. 我要么在构造这个错误,要么应该以不同的方式处理这种类型的操作(不使用Ajax)。
  2. 而不是返回重定向结果,而是返回其中包含javascript的视图,该视图在客户端进行重定向。

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


问题答案:

您可以使用它JavascriptResult来实现。

要重定向:

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

要重新加载当前页面:

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

似乎是最简单的选择。



 类似资料:
  • 我正在用Express开发一个具有聊天功能的多页面web应用程序(由socket.io提供)。用户可以邀请其他人到私人共享聊天室(该聊天室还有其他组件,如共享画板)。我想在完成邀请事务后将两个用户(邀请者和被邀请者)重定向到不同的URL。 因为socket.io不能访问路由的请求和响应对象,所以我尝试将socket.io实例传递到路由处理中。除了重复事件处理程序堆积在页面刷新上的问题之外,Expr

  • 问题内容: 我正在向服务器发送请求,但它正在返回网页。有没有办法获取网页的网址呢? 问题答案: 您需要检查重定向并停止(捕获)它们。如果捕获重定向,则可以使用响应结构的定位方法获取重定向URL(重定向到该URL)。

  • 我想在成功登录后重定向到主页。我找遍了,但没有找到解决办法。提前感谢

  • 问题内容: 我的Search.cshtml有一个名为“ search-results”的div,该div将被更新。SearchResults是操作名称。我已经在MVC2 / VS2008项目上做了很多次,但这是我第一次使用MVC3和VS2010。 问题是,单击提交将重新定向我的部分作为独立页面,而不是在div中呈现我的搜索结果。 我已经读到这可能是因为未启用Ajax。我的_Layout.cshtm

  • 如果axios api为空或初始状态为空,如何有条件地重定向到页面。在下面的代码中,我使用axios更新状态,用户信息在状态中可用,但代码继续调用在循环中。我试图实现的是,如果userinfo状态最初为空,则重定向到登录页面并进行身份验证。 我能够重定向罚款,但问题是与连续循环。即使用户信息存储重定向被调用(发生在循环中)

  • 我有一个两步验证表单,这意味着第一个用户输入得到验证(在ValidatecKetData控制器中),如果一切正常,您可以进入下一个表单页面,我可以通过 问题:在第二页,用户需要上传一个文件,如果他不这样做,验证失败。 如果是这种情况,验证器类立即重定向,因为它是后路由,所以不起作用。 所以我创建了一个这样的获取路线: 并将其放入-方法: 我把它放到了-method中,因为如果用户不在第二页附加文件