2012-06-07 3 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 не будет передано выбранному параметруBuilding метода FindRooms. Это всегда null? Как я могу исправить это, чтобы он работал как в POST, так и GET?Значение, которое не передается по URL-адресу

+1

У вас есть другие зарегистрированные маршруты? Имейте в виду порядок регистрации маршрута, поскольку вместо общего родового маршрута можно использовать более общий маршрут. –

ответ

0

Поскольку г-н Т.А. предположил, что другие маршруты влияют на это. Порядок маршрутизации важен.

Я поместил маршрут маршрута по умолчанию в конце и работает как шарм. !!

 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 } 

     );