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

时间:2015-05-13 14:08:21

标签: jquery ajax json asp.net-mvc-5

我的Controller方法返回Json对象,其中url的形成如下所示:

return Json(new { url = Url.Action("ShowContact", "Customer", new { vm = contactVM }) }, JsonRequestBehavior.AllowGet);

在ajax调用的成功代码中,我想将此url分配给window.location.href,以便我可以根据url形成重定向到视图。但是ajax调用的返回值显示作为url的一部分传递的路由值的纯文本值。

snapshot from inspect element

因此,我没有得到任何我希望传递给控制器​​的重定向操作方法的路由值。

那么我有什么选择来传递我的路由值,这是一个复杂的c#对象,包括集合?有没有更好的方法来实现我想做的事情?

谢谢,

3 个答案:

答案 0 :(得分:0)

您可以直接传递网址字符串而不是' Url.Action()'。 像这样:

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

return Json(url , JsonRequestBehavior.AllowGet);

答案 1 :(得分:0)

尝试拼凑它:

return Json(
    new
    {
        url = Url.Action("ShowContact", "Customer"),
        vm = contactVM
    },
    JsonRequestBehavior.AllowGet);

然后在客户端:

var url = result.url + '?vm=' + JSON.stringify(result.vm);

当然,我从未测试过这个。

答案 2 :(得分:0)

简单而简短

返回Json(new {redirectUrl = @ Url.Action(“ View”,“ Controller”)});