.NET 来自数据库的本地化站点地图?
我有一个自定义站点地图提供程序,它从数据库加载页面。
页面(pageid、fk_pageid(父级)、标题、url、show_in_menu)
我想全球化/本地化页面的title
。最好的方法是什么?
I have a custom sitemapprovider which loads pages from the database.
Pages (pageid, fk_pageid (parent), title, url, show_in_menu)
I would like to globalize/localize the title
of the page. What's the best method?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
创建 SiteMapNode 对象时,请使用允许您指定隐式/显式资源键的构造函数。我建议使用显式资源键。
http://msdn.microsoft.com/en-us/library/ms150104.aspx
“要以编程方式指定本地化资源,请将implicitResourceKey的值设置为将用于标识节点的本地化资源的唯一名称,或者将explicitResourceKeys设置为名称/值对的NameValueCollection集合,其中名称是节点要本地化的属性或自定义属性,值包含节点属性或自定义属性的本地化值,然后可以在相应的 .resx 文件中设置本地化值。 SiteMapNode 对象,请参阅如何:本地化站点地图数据。有关explicitResourceKeys 集合的语法要求,请参阅NameValueCollection。
通常,要本地化静态站点地图,您可以使用如下所示的资源表达式:
"$Resources:,,"
。相反,请将
、
和
值按照出现的顺序添加到explicitResourceKey NameValueCollection在表达式中,全部使用相同的键添加。因此,如果您的表达式为
"$Resources:SiteMapResourceFileOrClass,RootNode.Title,My Root Node"
,请执行以下操作:您可以对描述执行相同的操作。
When you create your SiteMapNode objects, use the constructor that allows you to specify implicit/explicit resource keys. I'd recommend going with explicit resource keys.
http://msdn.microsoft.com/en-us/library/ms150104.aspx
"To programmatically specify resources for localization, either set the value of implicitResourceKey to a unique name that will be used to identify localized resources for the node or set explicitResourceKeys to a NameValueCollection collection of name/value pairs where name is the node property or custom attribute to localize and value contains localization values for the node property or custom attribute. The localized values can then be set in the appropriate .resx files. For more information about how to localize the Title, Description, and any custom properties of a SiteMapNode object, see How to: Localize Site-Map Data. For the syntax requirements of the explicitResourceKeys collection, see NameValueCollection."
Normally to localize a static site map, you would use a resource expression like the following:
"$Resources:<ClassName>,<KeyName>,<DefaultValue>"
.Instead, add the
<ClassName>
,<KeyName>
, and<DefaultValue>
values to the explicitResourceKey NameValueCollection in the order they appear in the expression, all added using the same key.So if your expression would have been
"$Resources:SiteMapResourceFileOrClass,RootNode.Title,My Root Node"
, instead do the following:You can do the same for Description.