c # MVC маршрутизация с константами - PullRequest
2 голосов
/ 01 марта 2012

Я пытаюсь сгенерировать ссылку на страницу со следующим маршрутом: / {Контроллер} / {тип} / {} суб * * тысяча один

Ссылка должна идти на: / {Контроллер} / {тип} / {суб} / новый

Как мне указать «/ новую» часть URL-адреса в объекте или RouteValueDictionary, чтобы я мог передать его в HTML.ActionLink?

StackOverflow не позволит мне ответить на мой вопрос еще 8 часов ... так:

Спасибо, Джастин. Ваше предложение сработало, но ради полноты я обнаружил метод, используя метод Html.ActionLink:

Вам просто нужно указать ActionName метода, который разрешает этот маршрут. Похоже, что фреймворк автоматически определит, что вы хотите, чтобы он находился на том же пути, что и текущая страница.

Итак, если ваш маршрут:

routes.MapRoute(
            "New", // Route name
            "{controller}/{type}/{sub}"/new, // URL with parameters
            new {controller = "DefaultController", action = "Create", id = UrlParameter.Optional});

Ссылка:

Html.ActionLink("Create New Page", "Create")

Утверждение метода Джастина, как он работал для меня

Ответы [ 3 ]

0 голосов
/ 01 марта 2012

Насколько я знаю, реализации ActionLink по умолчанию не поддерживают это, поэтому у вас есть следующие опции:

В этом случае создайте его вручную (я не нахожусь перед Visual Studio, поэтому синтаксис может быть немного отключен)

<a href="@Url.Action(
    "Controller", "Method", new { type = "type", sub = "sub" }));/new">
    link text</a>

Или вы можете создать новый вспомогательный метод для инкапсуляции чего-то подобного, если это происходит достаточно часто.

0 голосов
/ 02 марта 2012

Я бы создал маршрут, как предложено в AD.Net выше, а затем использовал бы помощник по расширению Html.RouteLink для создания ссылки, таким образом, если вы когда-нибудь решите изменить URL / ссылку, она автоматически выбирается механизмом маршрутизации

routes.MapRoute(
                "New", // Route name
                "{controller}/{type}/{sub}"/{new}, // URL with parameters
                new {controller = "DefaultController", action = "Index", id = UrlParameter.Optional});

Html.RouteLink("Create New Page", "New")

0 голосов
/ 01 марта 2012
 routes.MapRoute(
                "New", // Route name
                "{controller}/{type}/{sub}"/{new}, // URL with parameters
                new {controller = "DefaultController", action = "Index", id = UrlParameter.Optional});
 routes.MapRoute(
                "Default", // Route name
                "{controller}/{type}/{sub}", // URL with parameters
                new {controller = "DefaultController", action = "Index"});

должно быть что-то вроде этого

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