2011-12-12 81 views
-2

自己的路線我有自己的路線:jQuery的AJAX和asp.net mvc的

routes.MapRoute(
     "Index", // Route name 
     "Index/{date}", // URL with parameters 
     new { controller = "Index", action = "Index", 
     date = UrlParameter.Optional } // Parameter defaults 

我怎麼能說我的指標控制的方法?

[HttpPost] 
     public ActionResult GetIndexationWage(string BeginDate, string EndDate) 
{ 
... 
} 

當我試試這個:

$.ajax({ 
       url: '@Url.Action("GetIndexationWage")', 
       type: 'POST', 
       data: JSON.stringify(myVar), 
       dataType: 'json', 
       processData: false, 
       contentType: 'application/json; charset=utf-8', 
       success: function(data) { 
.... 

它返回我的網頁(/索引),而不是一個JSON數據。如何做到這一點沒有一個單獨的控制器(實例 - ajaxController)?

+0

該路線甚至不匹配該方法簽名 – hunter

+0

請更具體地說,在GetIndexationWage方法內部放置一個斷點並查看它是否到達它。它是否在那裏?如果沒有,您是否使用Fiddler或FireBug來檢查請求/響應? –

+0

@hunter,他使用Url.Action而不是Url.RouteURL。 Url.Action採取行動或行動和控制器。 –

回答

1

你的MVC控制器方法應該使用JsonResult

此外,由於你的代碼是現在,你的指數方法的簽名會只有一個參數(日期),從而調用你的另一種方法GetIndexationWage必須得到它的「結束日期「參數...如果這是有意的,好的...只要確保你看到了。

另外,你的jquery調用直接調用GetIndexationWage,而不是使用路由。這也是這個意圖嗎?如果是這樣,請確保您使用JsonResult並知道您正在繞過映射路線。