asp.net mvc3 RouteLink - PullRequest
       6

asp.net mvc3 RouteLink

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

Я только что обновил свое приложение mvc2 до mvc3. И рутелинка перестала работать. любая подсказка ??

Global

routes.MapRoute(
            "Category",                                           
            "category/{cat}/{subcat}/{page}/{viewall}",                                 
            new 
            {
                controller = "Category",
                action = "Index",
                cat = UrlParameter.Optional,
                subcat = UrlParameter.Optional,
                page = UrlParameter.Optional,
                viewall = UrlParameter.Optional
            }  
        );

View

<%: Html.RouteLink("Women's", "Category", new { cat = "Women", subcat = "" })%>

Вот как это делает

<a href="">Women's</a>

Ответы [ 2 ]

3 голосов
/ 17 июня 2011

Это ошибка регрессии, как объяснил Фил Хаак [http://haacked.com/archive/2011/02/20/routing-regression-with-two-consecutive-optional-url-parameters.aspx]

2 голосов
/ 25 января 2011

Это нормально. У вас может быть только один необязательный параметр, и этот параметр должен быть последним в вашем определении маршрута. Так что cat, subcat и page не могут быть необязательными. Вам необходимо указать их значения:

<%: Html.RouteLink("Women's", "Category", new { 
    cat = "Women", 
    subcat = "somesubcat", 
    page = "123"  
})%>

В ASP.NET MVC 3 это правило было применено.

Рассмотрим следующие URL:

category/1
category/1/2/
category/1/2/3
category/1/2/3/4

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

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