2015-05-13 71 views
1

我的控制器方法返回如下圖所示,其具有形成爲URL JSON對象:回報url.action作爲JSON對象MVC

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

在Ajax調用的成功代碼,我要分配給此網址window.location的。所以我可以重定向到按照形成的URL查看。但是,ajax調用的返回值顯示的是作爲url一部分傳遞的路由值的純文本值。

snapshot from inspect element

因此,我沒有收到任何路線值我想通過我的控制器的重定向操作方法。

那麼,爲了傳遞我的路由值(包括集合的複雜c#對象),我有哪些選項?有沒有更好的方法來實現我想要做的事情?

感謝,

+0

分配給contactVM的是什麼?不知道你的意思是路由值 – beautifulcoder

+0

contactVM是我想傳遞給我的動作方法的viewmodel對象 – user2185592

+0

如果您立即重定向,那究竟是做ajax調用的重點。只要做一個正常的提交。 –

回答

0

嘗試拼湊一起:

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

然後在客戶端上:

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

當然,我從來沒有測試過。

+0

上述溶液的作品,但在很長ň討厭的網址結果... 感謝您的幫助。 – user2185592

0

您可以直接通過,而不是 'Url.Action()' 的URL字符串。 事情是這樣的:

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

return Json(url , JsonRequestBehavior.AllowGet); 
+0

它沒有按照你的建議工作。它只是增加了我的對象類型的完全限定名稱URL即 **客戶/ ShowContact?VM = .ContactVM ** – user2185592