Как мне настроить global.config для разрешения корневого пути к actionMethod в MVC2? - PullRequest
1 голос
/ 28 июля 2010

, в частности, структура имен каталогов по умолчанию - [Controller] / [ActionMethod], что приводит к отображению URL-адреса, например www.mysite.com/home/actionMethodName.

Что делать, если я хочу просто подразумевать контроллер (в данном примере 'home'), чтобы получить URL-адрес, который выглядит следующим образом: www.mysite.com/actionMethodName.

Я не видел много запросов на такую ​​конфигурацию. Я могу видеть, как это нарушает соглашение, но я бы предположил, что есть много людей, которым нужен корневой путь.

Ответы [ 2 ]

2 голосов
/ 28 июля 2010

Поскольку вы планируете удалить элемент {controller} URL-адреса, вам может потребоваться немного конкретнее указать другие URL-адреса, например ::10000

routes.MapRoute("MyOtherControllerRoute", "Account/{action}", new { controller = "Account", action = "Index" });
routes.MapRoute("MyDefaultRoute", "{action}", new { controller = "Home", action = "Index" });

При запросе таблицы маршрутов, если используется URL-адрес, такой как www.mysite.com/Account, он будет соответствовать первому маршруту, потому что мы были конкретны в отношении шаблона, используемого для соответствия URL-адресу. Если мы затем сделаем что-то вроде www.mysite.com/DoSomething, он будет использовать маршрут по умолчанию, который мы выбрали последним, пытаясь вызвать действие DoSomething для типа HomeController.

Что я заметил, так это то, что многие разработчики MVC, похоже, предполагают, что URL строго {something}/{something}/{something}, тогда как по сути это может быть все что угодно, например, у меня может быть маршрут, который делает: www.mysite.com/my-weird-and-wonderful-url который я мог бы сопоставить конкретно:

routes.MapRoute("Somewhere", "my-weird-and-wonderful-url", new { controller = "Whatever", action = "Whenever" });

Надеюсь, это поможет.

2 голосов
/ 28 июля 2010

Легко, как яблочный пирог - вы просто указываете свой маршрут!=)

Пример:

routes.MapRoute(
    "RootPathing",
    "{action}",
    new { controller = "Default", action = "Index" });

Это зарегистрирует маршрут, который перехватывает все пути, и попытается сопоставить их с DefaultController с именем действия, соответствующим пути.Однако обратите внимание, что если вы поместите этот маршрут выше включенного маршрута по умолчанию, вы не сможете достичь другого контроллера, кроме DefaultController - следовательно, поместите этот маршрут ниже маршрута по умолчанию в цепочке.Затем ему будут сопоставляться все пути, которые не соответствуют имени контроллера.При отладке маршрутов Routing Debugger Фила Хаака действительно стоит посмотреть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...