Domanda

Quando creo un sito web multilingue (con moduli web ASP.NET), userò un modulo HTTP per riscrivere gli URL per finire con qualcosa di amichevole (per umani e motori di ricerca) come:

uk/products/product_category_one/sub_category_one/index.aspx
uk/products/product_category_one/sub_category_one/widget_mk5.aspx
es/productos/categoría_de_producto_una/widget_mk5.aspx

La mia (newbie) comprensione di MVC è che l'URL dovrebbe assumere il formato di

  

Controller / Azione / Identificatore

quindi replicare la funzionalità sopra con MVC finirà con URL simili a:

products/category/123/product_category_one/sub_category_one
products/items/456/widget_mk5

Domande ..

  • Posso inserire un codice paese nell'URL prima del segmento "controller"?
  • È possibile mappare "prodotti" e "prodotti" sullo stesso controller?

Grazie per l'aiuto

Modifica Oltre alla risposta di Panos di seguito, ho trovato ulteriori informazioni sul Sito Web ASP.NET .

È stato utile?

Soluzione

L'URL può assumere quasi qualsiasi altra forma che ti piace. Per maggiori informazioni, controlla ASP.NET MVC Framework (parte 2): routing URL . Solo per iniziare (poiché non sono sicuro che sia la soluzione ottimale), puoi aggiungere due nuovi percorsi nel tuo global.asax:

        routes.MapRoute(
            "ukRoute",
            "{lang}/Products/{action}/{id}/{subcategory}",
            new { lang = "uk", controller = "Products", action = "Index", id = "", subcategory = "" }
        );
        routes.MapRoute(
            "esRoute",
            "{lang}/Productos/{action}/{id}/{subcategory}",
            new { lang = "es", controller = "Products", action = "Index", id = "", subcategory = "" }
        );

Questi percorsi comprendono i seguenti URL (e li associano entrambi al ActionResult Category (ID stringa, sottocategoria stringa) del metodo ProductsController ):

uk/Products/Category/1/A
es/Productos/Category/1/A

Se vuoi creare tali URL nelle tue viste puoi usare qualcosa come:

<%= Html.RouteLink("English 1.A", "ukRoute", new { lang = "uk", action = "Category", id = "1", subcategory = "A" })%>
<%= Html.RouteLink("Spanish 1.A", "esRoute", new { lang = "es", action = "Category", id = "1", subcategory = "A" })%>

Altri suggerimenti

Puoi farlo, ma tieni presente che non tutti i paesi sono lingue. Ad esempio, en-gb è la consueta rappresentazione dell'inglese britannico, o più specificamente, la locale della Gran Bretagna per il contenuto inglese, ad esempio. Se puoi, vale la pena seguire le convenzioni derivate da RFC1766 per la lingua-LOCALE.

I motori di ricerca in realtà tendono a fare un buon lavoro nella negoziazione dei contenuti, quindi non è necessario avere URI separati per lo stesso contenuto in lingue diverse. Google Japan eseguirà la scansione con ja-JP come intestazione della lingua accetta, ad esempio.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top