【发布时间】:2015-07-24 21:22:29
【问题描述】:
我的 Controller 方法返回 Json 对象,其 url 形成如下所示:
return Json(new { url = Url.Action("ShowContact", "Customer", new { vm = contactVM }) }, JsonRequestBehavior.AllowGet);
在 ajax 调用的成功代码中,我想将此 url 分配给 window.location.href 以便我可以根据形成的 url 重定向到查看。但是 ajax 调用的返回值显示作为 url 一部分传递的路由值的纯文本值。
因此,我没有得到想要传递给控制器的重定向操作方法的任何路由值。
那么我有哪些选项可以传递我的路由值,它是复杂的 c# 对象,包括集合?有没有更好的方法来实现我想做的事情?
谢谢,
【问题讨论】:
-
contactVM 分配了什么?不知道你所说的路由值是什么意思
-
contactVM 是我想传递给我的操作方法的视图模型对象
-
如果您立即重定向,那么进行 ajax 调用到底有什么意义。只需正常提交即可。
-
而且由于
contactVM显然是一个复杂的对象,即使您使用了正确的语法,这也可能无法正常工作。您不应将复杂对象传递给 GET 方法。除了丑陋的查询字符串之外,如果模型包含复杂对象或集合的属性,绑定将失败,并且有可能超出查询字符串限制并引发异常 -
@StephenMuecke 我完全同意您对 cmets 的担忧。我知道我试图做的事情并不好,但我需要在服务器端调用后回到客户端,因此我想到了这样的实现。现在我放弃了这种实现的想法并采取了另一种方式。感谢您的意见。
标签: jquery ajax json asp.net-mvc-5