Вывод Html.Routelink - ASP.NET C # MVC - PullRequest
1 голос
/ 17 марта 2009

У меня есть вызов, который выглядит так:

<%= Html.RouteLink(item.displayName, "DisplayCategory", new { category = Html.Encode(item.displayName), subcat = item.searchName }) %>

и я получаю HTML, который выглядит так:

http://localhost:1485/Home/ShowCategory/Electronics%20&%20Photography?subcat=electronics-photo

Почему URL заканчивается на "? Subcat = electronics-photo", а не на "/ electronics-photo"? Это как-то связано с определением маршрута?

   routes.MapRoute(
        "DisplayCategory",
        "Home/ShowCategory/{category}/{tags}",
        new { controller = "Home", action = "ShowCategory", category = "", tags = "" }
    );

Любые подсказки приветствуются!

Ответы [ 2 ]

2 голосов
/ 20 января 2010

Маршрутизация MVC привязывается к строке запроса, если она не может соответствовать одному из параметров в определении маршрута. Попробуйте добавить субкат к вашему маршруту:

routes.MapRoute(
        "DisplayCategory",
        "Home/ShowCategory/{category}/{tags}/{subcat}",
        new { controller = "Home", action = "ShowCategory", category = "", tags = "", subcat = "" }
    );
0 голосов
/ 17 марта 2009

Я просто беру удар, но похоже, что вы используете MVC Framework.

В нем каждый контроллер имеет действие, в данном случае ShowCategory, и по умолчанию они принимают строку запроса, в данном случае категорию. MVC целенаправленно абстрагирует структуру папок. Я считаю, что приложение MVC всегда будет иметь URL-адрес этого типа и глубины domain.ext / Controller / Action? QueryString.

Я думаю, что вопрос может быть в том, правильно ли настроен субкадр. Немного больше информации / код может быть обнадеживающим.

Также извините за то, что не обратились к разделу маршрутизации вашего вопроса.

...