.NET来自数据库的本地化站点地图?

时间:2010-03-05 23:02:46

标签: .net localization globalization sitemapprovider sqlsitemapprovider

我有一个自定义sitemapprovider,可以从数据库中加载页面。

  

页面(pageid,fk_pageid(父级),标题,网址,show_in_menu)

我想全局化/本地化页面的title。什么是最好的方法?

1 个答案:

答案 0 :(得分:1)

创建SiteMapNode对象时,请使用允许您指定隐式/显式资源键的构造函数。我建议使用显式资源键。

http://msdn.microsoft.com/en-us/library/ms150104.aspx

“要以编程方式指定本地化资源,请将implicitResourceKey的值设置为将用于标识节点的本地化资源的唯一名称,或将explicitResourceKeys设置为名称/值对的NameValueCollection集合,其中name是节点属性或者本地化和值的自定义属性包含节点属性或自定义属性的本地化值。然后可以在相应的.resx文件中设置本地化值。有关如何本地化标题,描述和任何自定义属性的详细信息。 SiteMapNode对象,请参见如何:本地化站点地图数据。有关explicitResourceKeys集合的语法要求,请参阅NameValueCollection。“

通常,为了本地化静态站点地图,您将使用如下所示的资源表达式:"$Resources:<ClassName>,<KeyName>,<DefaultValue>"

而是将<ClassName><KeyName><DefaultValue>值按照它们在表达式中出现的顺序添加到explicitResourceKey NameValueCollection中,所有值都使用相同的键添加。

因此,如果您的表达式为"$Resources:SiteMapResourceFileOrClass,RootNode.Title,My Root Node",请执行以下操作:

explicitResourceKeys.Add("Title", "SiteMapResourceFileOrClass")
explicitResourceKeys.Add("Title", "RootNode.Title")
explicitResourceKeys.Add("Title", "My Root Node")

您可以对描述执行相同的操作。