Есть ли способ реализовать собственный маршрут, чтобы определенные значения маршрута автоматически передавались? - PullRequest
1 голос
/ 06 декабря 2011

У меня есть приложение с несколькими арендаторами, то есть у меня есть несколько клиентов, которые используют приложение и совместно используют один домен с помощью папок.Например:

  1. www.mydomain.com / client1 / home / index
  2. www.mydomain.com / client2 / home / index

Я не могу использовать области, потому что клиенты не являются статичными, они регистрируются, и они должны иметь возможность сразу начать использовать приложение.Я не могу использовать субдомены, потому что в этом случае у меня нет динамического контроля над DNS.

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

То есть я хочу, чтобы это было правдой:

@Url.Action("Index", "Home") -> www.mydomain.com/client1/home/index

без передачи client1, что-то может разрешить client1, потому что к тому временипостроить этот URL, эта строка будет значением текущих значений маршрута, потому что я уже на client1

Как я могу это сделать?

1 Ответ

5 голосов
/ 06 декабря 2011
routes.MapRoute(
    "Default",
    "{client}/{controller}/{action}/{id}",
    new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

Теперь при переходе к /client1/Home/Index и при просмотре Index.cshtml при использовании:

@Html.ActionLink("foo", "About")

это сгенерирует:

<a href="/client1/home/About">foo</a>

То же самое относится и к использованию помощника Url.Action внутри действия Index. Это сохранит значение маршрута client из исходного запроса.

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