.NET localizzato sitemap dal database?
-
24-09-2019 - |
Domanda
Ho un SiteMapProvider personalizzato che carica le pagine dal database.
Pagine (pageid, fk_pageid (genitore), titolo, url, show_in_menu)
Vorrei globalizzare / localizzare la title
della pagina. Qual è il metodo migliore?
Soluzione
Quando si creano oggetti SiteMapNode, utilizzare il costruttore che consente di specificare le chiavi di risorse implicito / esplicito. Mi consiglia di andare con le chiavi di risorse esplicite.
http://msdn.microsoft.com/en-us/library/ ms150104.aspx
"Per specificare di programmazione le risorse per la localizzazione, sia impostare il valore di implicitResourceKey a un nome unico che verrà utilizzato per identificare le risorse localizzate per il nodo o explicitResourceKeys set ad una collezione NameValueCollection di nome coppie / valore in cui nome è la proprietà del nodo o attributo personalizzato per la localizzazione e il valore contiene i valori di localizzazione per l'attributo di proprietà nodo o personalizzato. i valori in lingua possono essere impostati nei file RESX appropriati. per ulteriori informazioni su come localizzare il titolo, descrizione, e le eventuali proprietà personalizzate di un oggetto SiteMapNode, vedere Procedura:.. Localizzare Mappa del sito-dati per i requisiti di sintassi della collezione explicitResourceKeys, vedere NameValueCollection "
Normalmente per localizzare una mappa del sito statico, si può usare un'espressione risorsa come il seguente:. "$Resources:<ClassName>,<KeyName>,<DefaultValue>"
Al contrario, aggiungere il <ClassName>
, <KeyName>
, e valori <DefaultValue>
alla explicitResourceKey NameValueCollection nell'ordine in cui appaiono nell'espressione, il tutto aggiunto utilizzando la stessa chiave.
Quindi, se la vostra espressione sarebbe stata "$Resources:SiteMapResourceFileOrClass,RootNode.Title,My Root Node"
, invece procedere come segue:
explicitResourceKeys.Add("Title", "SiteMapResourceFileOrClass")
explicitResourceKeys.Add("Title", "RootNode.Title")
explicitResourceKeys.Add("Title", "My Root Node")
Si può fare lo stesso per la descrizione.