【问题标题】:JavaScript ASP.Net MVC redirection with object [closed]带有对象的 JavaScript ASP.Net MVC 重定向 [关闭]
【发布时间】:2018-01-25 17:26:55
【问题描述】:

我如何使用 JavaScript 重定向到基于发送对象启动页面的控制器。

在 MVC 中我们做这样的事情

return View("RegistrationConfirmation", registrationIsasViewModel);

我将如何使用 JavaScript 完成同样的事情。 注意

我不想将数据发送到 WebApi 控制器。

如果 WebApi 可以返回我需要的视图,我们可以使用它 我需要能够调用控制器以便它返回视图。

【问题讨论】:

  • 您可以使用 javscript 打开一个新窗口/标签。但不要考虑传递一个对象。考虑传递所需的最少数据(例如:查询字符串键/值 - 实体的主键)。请记住,查询字符串有一个限制。
  • 您要求让客户端编码执行服务器端操作。您应该开发一个 javascript 可以命中的后端 API,然后在后端触发某些东西。或者只是让 javascript 将您重定向到您已经预定义的另一个视图。你为什么反对 API??
  • 不完全是,我需要 Java 脚本来调用控制器并发送对象,然后控制器将接管并执行操作并返回我需要的视图
  • Web Api 可以返回我需要的视图吗?如果是这样,我愿意接受

标签: javascript c# asp.net-mvc


【解决方案1】:

您使用的 JavaScript 将是严格的客户端。您没有提供任何证据表明您使用的前端框架实际上可以进行服务器端预处理。话虽如此,您有两种选择:

  • JavaScript 使用查询字符串重定向到另一个页面。
  • Ajax,带有返回 JavaScript 结果的 post 方法的控制器。

这些是你唯一真正的选择,在大多数情况下都不是理想的。

更新:

$.ajax({
    ...    
});

然后在服务器上,您将拥有控制器:

return JavaScript("window.location = ....");

服务器基本上会发送重定向到另一个页面,但该控制器的操作会丢失,除非您存储在某种缓存中,然后在重定向上呈现下一页。

【讨论】:

  • 所以我无法在新页面上渲染模型?
  • @C.Robin 你会,基本上页面加载。用户做了一些事情,你通过 Ajax 将数据发送到服务器,它处理数据,然后当它返回重定向时,该新页面的控制器将执行。您想要返回的任何模型数据都可以返回。该新控制器将加载新模型数据。如果新控制器需要之前控制器的模型,则需要缓存它以便新控制器可以访问。
【解决方案2】:

您可以使用 Json 对象来完成此操作。向控制器发出 ajax 请求并返回 Json 对象。成功时使用 window.location.href 重定向到另一个页面

http://www.c-sharpcorner.com/blogs/how-to-return-json-nested-sub-object-from-controller-in-mvc 将帮助您更详细地了解它。

【讨论】:

  • 我认为他正在尝试做一个 $.ajax({ ... });但让控制器基本上返回一个重定向。这是可能的,因为 JavaScript 对象可以让服务器为对象模型和加载页面执行所需的操作。
  • 是的,这听起来很对,我该如何执行呢? @格雷格
猜你喜欢
  • 2013-02-05
  • 2011-04-30
  • 2013-05-25
  • 2019-01-13
  • 1970-01-01
  • 2015-04-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多