Как заставить этот маршрут работать в моем приложении ASP.NET MVC? - PullRequest
1 голос
/ 17 января 2011

Мне нужен маршрут примерно такой:

MyController/Action/categoryid/productid

Итак, я сделал следующее в моем файле Global.asax:

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    routes.MapRoute(
      "Default", // Route name
      "{controller}/{action}/{categoryid}/{productid}",
      new { controller = "MyController", 
            action = "Action", 
            categoryid = UrlParameter.Optional, 
            productid = UrlParameter.Optional 
      } 
    );

    routes.MapRoute(
        "Default", // Route name
        "{controller}/{action}/{id}", 
        new { controller = "Home", 
              action = "Index", 
              id = UrlParameter.Optional 
        } // Parameter defaults
    );
}  

Но когда я просматриваю Mycontroller/action/2/3 ресурс не найден.

Ответы [ 3 ]

3 голосов
/ 17 января 2011

Как этот код вообще собирается? Определение "Default" в качестве имени маршрута дважды должно остановить его компиляцию.

Переименовать один из них во что-то другоеи он должен работать.

Вероятно, у вашего action есть другие параметры или вы определили [HttpPost] как атрибут, и вы используете GET.

1 голос
/ 17 января 2011

Есть прекрасный инструмент от Фила Хаака, который называется ASP.NET Routing Debugger , где вы можете ввести различные URL-адреса в адресной строке, чтобы увидеть, какой маршрут соответствует.

0 голосов
/ 17 января 2011

Это то, что вы хотите:

{MyController} / {action} / {categoryid} / {productid},

Но должно дать более значимое имяна ваш MyController / часть действия URL, например «Пользователи» / «Правка» / 2/3

...