2016-03-22 12 views
1

In meiner ASP.Net MVC-Anwendung ich die Standardroute Registrierung in startup.cs zuErhalten URL für individuelle Route in asp.net Mvc

routes.MapRoute(
    name: "default", 
    template: "{customer}/{language=fi-FI}/{controller=Home}/{action=Index}/{id?}"); 

geändert haben also alle Routen würden die Kunden-ID und die aktuelle enthalten Sprache. Benutzerdefinierte Segmentpassung nimmt die Kunden und Sprachinformationen in neuen URLs setzen so, wenn die angeforderte URL ist/customer1/fi-fi/somecontroller/someaction jede erzeugte URL wie diese

<a asp-controller="othercontroller" asp-action="otheraction">Some action</a> 

korrekt erzeugt werden würde, mit dem Kunden und Sprachcode darin.

Die Frage ist, wie soll ich die URL generieren, damit ich den Kunden und den Sprachcode angeben kann, ohne String-Verkettung zu tun? Ich würde dies z.B. in den Links zum Ändern der Sprache.

Ich habe

versucht
<a asp-controller="somecontroller" asp-action="someaction" asp-route="default" asp-route-customer="customer2" asp-route-language="en-us">Some action in other language and other customer</a> 

aber das sagt, dass ich nicht Aktion und Controller können festlegen, wann asp-Route definiert ist, und wenn ich Remote-asp-Route dann ändert sich nichts.

+0

Ich habe etwas Ähnliches in diesem Projekt die Ordner Mieter unterstützt, https://github.com/joeaudette/cloudscribe Ich glaube, Sie brauchen eine Route Einschränkung für {Kunde} zu implementieren, wie ich für SiteFolder getan haben. Sehen Sie sich den Start im Beispiel-Web-App-Projekt an –

Antwort

0

Ich habe dies funktioniert mit @ Url.RouteUrl, z.

@Url.RouteUrl("default", new { customer = "someothercustomer", language = "someotherlanguage", controller = "somecontroller", action = "someaction" })