ASP.NET MVC маршрутизация - PullRequest
       11

ASP.NET MVC маршрутизация

3 голосов
/ 23 сентября 2008

До сих пор мне удавалось использовать маршрутизацию по умолчанию, поставляемую с ASP.NET MVC. К сожалению, теперь, когда я разветвляюсь на более сложные маршруты, я изо всех сил пытаюсь понять, как заставить это работать.

Простой пример, который я пытаюсь получить, - это указать путь / User / {UserID} / Items для сопоставления с функцией Items контроллера пользователя. Может кто-нибудь сказать мне, что я делаю не так с моей маршрутизацией здесь?

routes.MapRoute("UserItems", "User/{UserID}/Items", 
                      new {controller = "User", action = "Items"});

И на моей странице aspx

Html.ActionLink("Items", "UserItems", new { UserID = 1 })

Ответы [ 4 ]

4 голосов
/ 23 сентября 2008

Исходя из кода MVC Preview 4, передо мной стоит перегрузка для Html.ActionLink (), которую вы используете:

public string ActionLink(string linkText, string actionName, object values);

Обратите внимание, что вторым параметром является actionName , а не routeName .

Поэтому попробуйте:

Html.ActionLink("Items", "Items", new { UserID = 1 })

Или попробуйте:

<a href="<%=Url.RouteUrl("UserItems", new { UserId = 1 })%>">Items</a>
1 голос
/ 23 сентября 2008

Можете ли вы опубликовать больше информации? Какой URL генерирует страница aspx в ссылке? Это может быть из-за порядка определения ваших маршрутов. Я думаю, вам нужно объявить свой маршрут до маршрута по умолчанию.

0 голосов
/ 30 января 2011
Html.ActionLink("Items", "User", new { UserID = 1 })
0 голосов
/ 03 апреля 2009

Сначала начните с просмотра того, какой URL он генерирует, и проверки его с помощью Phil Haack * библиотеки отладки маршрута . Это многое прояснит.

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

Кроме того (и это сугубо личное мнение) мне нравится генерировать мои ссылки где-то в начале страницы в виде строк, а затем помещать эти строки в мой HTML. Это крошечные накладные расходы, но, на мой взгляд, делает код намного более читабельным. Кроме того, если у вас есть или повторяются ссылки, вы должны сгенерировать их только один раз.

предпочитаю ставить

<% string action = Url.RouteUrl("NamedRoute", new 
    { controller="User",
      action="Items",
      UserID=1});%>

и позже напишите

<a href="<%=action%>">link</a>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...