Frage

Haben Sie eine ASP.NET MVC-Site, die lokalisiert ist. Die Lokalisierung Funktionalität addiert die beiden digit Sprache-ID an die URL, z.B. / Es / Seite. Wenn keine Sprache Id in der URL gefunden wird, schaltet sich die Website an den Browser Kultur des Benutzers. Alle sind gut. Allerdings ist die Website Hyperlinks, eine Mischung aus hartcodiert href-Tags, actionlinks usw., enthalten nicht die ID-Basissprache, so dass, wenn über die Website der Satz Kultur Klick verloren, und die Website kehrt an den Browser Kultur des Benutzers .

My (faul) Gedanke ist es, alle href Werte zu ersetzen, die auf eine externe Seite zeigen nicht, mit der lokalisierten URL (z umfasst die / es /). Andernfalls müssen alle Seiten Links aktualisiert werden, um den Kulturcode enthalten.

Ist das einfach nur dumm? Oder, vernünftig, und soll mit einem benutzerdefinierten Ansicht Motor durchgeführt werden, oder einen anderen Ansatz?

Keine korrekte Lösung

Andere Tipps

Meine Antwort ist (derzeit):

Die App einen Basis-Controller haben, da ich habe hinzugefügt:

if (PathLanguageCode == "" && requestContext.HttpContext.Session["LanguageCode"] != null && requestContext.HttpContext.Request.RequestType == "GET")
{
    requestContext.HttpContext.Response.Redirect("/" + requestContext.HttpContext.Session["LanguageCode"] + requestContext.HttpContext.Request.RawUrl);
}

Dieses Beispiel zeigt nicht, wie die PathLanguageCode Variable definiert ist, aber es sollte zumindest ausreichen, um zu zeigen, wie diese zentral gehandhabt werden kann, ohne String-Werte zu ersetzen.

Der einzige Nachteil dieses Ansatzes, dass ich sehen kann, ist, dass die Website wirklich für Suchmaschinen nicht freundlich ist, usw., da wir viele Umleitungen am Ende tut.

Wenn Sie möchten, können Sie an meinem Ansatz sehen, dass wir nahmen. Er spricht über die Kultur in der URL setzen. Hoffe, es hilft!

Cultured Ansicht Motor für MVC

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top