Is er een manier waarop ik een aangepaste route kan implementeren zodat bepaalde routewaarden automatisch worden doorgegeven?

Ik heb een applicatie die multitenant is, dat wil zeggen dat ik meerdere clients heb die de applicatie gebruiken en een enkel domein delen met mappen. Zoals het volgende:

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

Ik kan geen gebieden gebruiken omdat de clients niet statisch zijn, ze registreren en ze moeten de toepassing meteen kunnen gebruiken. Ik kan subdomeinen niet gebruiken omdat ik in dit geval geen dynamische controle over de DNS heb.

Dat gezegd hebbende, hoe kan ik een aangepaste route implementeren zodat ik niet telkens de clientnaam hoef door te geven als ik een uitgaande URL maak?

Dat wil zeggen, ik wil dat dit waar is:

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

without passing client1, something can resolve client1 because by the time I build this URL, this string will be a value of the current route values, because I'm already at the client1

Hoe kan ik dat doen?

1

1 antwoord

routes.MapRoute(
    "Default",
    "{client}/{controller}/{action}/{id}",
    new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

Wanneer u nu naar /client1/Home/Index en binnen de weergave Index.cshtml gaat wanneer u gebruikt:

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

dit zal genereren:

foo

Hetzelfde geldt voor het gebruik van de Url.Action helper in de actie Index . Het behoudt de routewaarde client van het oorspronkelijke verzoek.

5
toegevoegd
Dat werkt best goed. Dank je!
toegevoegd de auteur André Pena, de bron