Проблемы маршрутизации ASP.NET MVC - PullRequest
0 голосов
/ 24 октября 2009

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

В основном я хочу сделать что-то похожее на то, как StackOverflow работает так:

http://localhost/faq

Я хочу, чтобы это схватило HomeController, нажало faq и вернуло faq view. Я не могу понять, как это сделать.

Также я попытался добавить новый маршрут для чего-то вроде этого:

http://localhost/Boxes/25

Итак, Boxes - это контроллер, 25 - это, очевидно, id (параметр). Аналогично тому, как в stackoverflow есть: https://stackoverflow.com/questions/[question число] / [название вопроса]

Итак, я попытался сделать это:

    routes.MapRoute(
         "Boxes",
         "Boxes/{boxnumber}",
         new {
             action="Details",  cubenumber = ""

} );

безуспешно.

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

Большое спасибо, ребята!

Ответы [ 2 ]

2 голосов
/ 24 октября 2009

Попробуйте следующее:

routes.MapRoute(
         null, // optional route name
         "faq",
         new { controller="Home", action="Faq" } );

routes.MapRoute(
         null, // optional route name
         "Boxes/{boxnumber}",
         new { controller="Boxes", action="Details", boxnumber = ""} );

// Original route, if needed, should come AFTER more specialized routes.
routes.MapRoute(
         "Default",                                                // Route name
         "{controller}/{action}/{id}",                             // URL with parameters
         new { controller = "Home", action = "Index", id = "" } ); // Parameter defaults

Некоторые заметки, которые могут помочь вам лучше понять это:

  • параметры контроллера и действия должны быть указаны , либо явно во входящем URL, либо с помощью заданных по умолчанию значений (если отсутствует во входящем URL)
  • порядок добавления маршрутов имеет значение , поскольку первое совпадение будет использоваться для каждого входящего URL-адреса. В приведенном выше примере, если исходный маршрут добавляется первым, остальные никогда не будут сопоставлены (поскольку исходный маршрут задает значения по умолчанию для всех параметризованных частей URL)
  • имя маршрута необязательно , требуется только в том случае, если вы используете имена маршрутов для создания исходящих URL-адресов
1 голос
/ 24 октября 2009

Когда вы определяете маршрут, он должен содержать как минимум две части информации: контроллер и действие. Эти значения могут передаваться как параметр (т. Е. Часть «{параметр}» в шаблоне URL) или как значение по умолчанию.

Пример маршрута, который вы вставили выше, включает в себя действие, но не содержит контроллера, поэтому он не способен удовлетворить запрос. Поскольку имя вашего контроллера - "BoxesController", вы можете просто добавить "controller = 'Boxes'" к значениям по умолчанию этого маршрута, и все будет в порядке.

Чтобы получить маршрут faq, вы можете просто определить маршрут, URL которого был "faq" и имел значения по умолчанию: controller = "Home", action = "Faq".

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