2012-06-07 8 views
0
//In Controller this is what I have 
public class AjaxController : Controller 
{ 

    [AcceptVerbs(new string[]{"GET"})] 
    public ActionResult FindRooms(string selectedBuilding) 
    { 
     return Json(new { Room = "x"}, JsonRequestBehavior.AllowGet); 
    } 

} 

//In Global.asax.cs I have 
routes.MapRoute 
(
    "AjaxRoute1", 
    "Ajax/FindRooms/{selectedBuilding}", 
    new { controller = "Ajax", action = "FindRooms", selectedBuilding = "" } 
); 

如果我瀏覽到URL localhost/Ajax/FindRooms/SOMEBUILDING。 SOMEBUILDING沒有傳遞給FindRooms方法的selectedBuilding參數。它總是空?我該如何解決這個問題,以便它可以在POST和GET中工作?值未在url中傳入

+1

您是否有其他路線註冊?注意路由註冊的順序,因爲可以使用更通用的路由而不是通用路由。 –

回答

0

正如TA先生建議其他路線會影響到這一點。路由順序很重要。

我把默認的路由路線放在最後,就像一個魅力一樣。

 routes.MapRoute 
     (
      "AjaxRoute1", 
      "Ajax/FindRooms/{selectedBuilding}", 
      new { controller = "Ajax", action = "FindRooms", selectedBuilding = "" } 
     ); 

     routes.MapRoute 
     (
      "Default", // Route name 
      "{controller}/{action}/{id}", // URL with parameters 
      new { controller = "Home", action = "Index", id = UrlParameter.Optional } 

     );