Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 返回url.action作为json对象mvc_Jquery_Ajax_Json_Asp.net Mvc 5 - Fatal编程技术网

Jquery 返回url.action作为json对象mvc

Jquery 返回url.action作为json对象mvc,jquery,ajax,json,asp.net-mvc-5,Jquery,Ajax,Json,Asp.net Mvc 5,My Controller方法返回Json对象,该对象的url格式如下所示: return Json(new { url = Url.Action("ShowContact", "Customer", new { vm = contactVM }) }, JsonRequestBehavior.AllowGet); 在ajax调用的成功代码中,我想将此url分配给window.location.href,以便根据形成的url重定向到视图。但ajax调用的返回值显示作为url一部分传递的路由值的

My 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#对象),我有哪些选项?有没有更好的方法来实现我想做的事情


谢谢,

您可以直接传递url字符串,而不是“url.Action()”。 大概是这样的:

string url = "Customer/ShowContact?vm=" + contactVM;

return Json(url , JsonRequestBehavior.AllowGet);

试着把它拼凑起来:

return Json(
    new
    {
        url = Url.Action("ShowContact", "Customer"),
        vm = contactVM
    },
    JsonRequestBehavior.AllowGet);
然后在客户机上:

var url = result.url + '?vm=' + JSON.stringify(result.vm);
诚然,我从未测试过这一点。

简单而简短


返回Json(新的{redirectUrl=@Url.Action(“视图”、“控制器”)})

分配给contactVM的是什么?我不确定你所说的route valuecontactVM是什么意思,我想将它传递给我的操作方法viewmodel对象如果你立即重定向,那么进行ajax调用到底有什么意义。只需做一个普通的提交。而且由于
contactVM
显然是一个复杂的对象,即使您使用了正确的语法,这也可能无法正常工作。不应将复杂对象传递给GET方法。除了丑陋的查询字符串外,如果模型包含复杂对象或集合的属性,绑定将失败,并且有可能超出查询字符串限制并抛出错误exception@StephenMuecke我完全同意你评论中的担忧。我知道我试图做的并不好,但在服务器端调用之后,我需要回到客户端,因此我想到了这样的实现。现在,我放弃了这种实现的想法,采取了另一种方式。谢谢你的意见。它没有按照你的建议工作。它只是将我的对象类型的完全限定名添加到url,即Customer/ShowContact?vm=。ContactVMOver解决方案可以工作,但会导致非常长的url。。。谢谢你的帮助。