2016-09-12 2 views
1

Szenario:
DNS-Name ist lokalisiert wie. Alle diese Einträge zeigen auf der gleichen Website:MVC - lokalisierte URLs/Routen

  • www.mavoiture.com (fr)
  • www.mycar.com (en)
  • www.meinauto.com (de)

Ich möchte keine Sprachcodes in den URLs verwenden!

- www.mavoiture.com/maison/enregistrer (fr)
- www.mycar.com/house/register (en)
- www.meinauto.com/Haus/registrieren (de)

Ich kann Routenattribute für Aktionsmethoden in jeder Sprache registrieren.

Dies funktioniert auf den ersten Blick. Aber das funktioniert nicht, wenn

URL.Action("MyAction","Controller") 

oder

@Html.ActionLink(...) 

oder

@Html.RenderAction 

Wie kann ich das Routing anpassen, um die lokalisierte URLs zu haben, in die übersetzt (auch Hyperlinks) aktuelle Sprache? Die Sprache wird durch den DNS-Namen bestimmt.

Antwort

0

Sie möchten @Html.RouteLink(...) verwenden. Dadurch können Sie die Route beim Generieren der Links angeben.

So alle Routen registrieren dann:

@Html.RouteLink("Link to Register", "FR-Route", 
       new { controller = "House", action = "Register" }) 

Der Link wird dann auf die "FR-Strecke" Vorlage umgewandelt werden, die "maison/enregistrer" sein könnte.

Url.Action - Sie können RouteUrl(...) verwenden.

RenderAction - ist nicht wirklich wichtig, da der Endbenutzer die URL eines RenderAction nie sehen wird.

+1

Perfekt! ......... – Perro