如何使用MVCSiteMap进行隐式本​​地化?

时间:2010-10-23 19:09:44

标签: asp.net-mvc mvcsitemapprovider

我正在尝试使用MVCSiteMap进行隐含本地化,但它不起作用。

以下是我的示例Web.Sitemap

<?xml version="1.0" encoding="utf-8" ?>

<mvcSiteMap xmlns="http://mvcsitemap.codeplex.com/schemas/MvcSiteMap-File-2.0" enableLocalization="true">

<mvcSiteMapNode title="Home" controller="Home" action="Index" changeFrequency="Always" updatePriority="Normal">

    <mvcSiteMapNode resourceKey="Products" title="Products" controller="Products" action="Index">
        <mvcSiteMapNode title="Edit" controller="Products" action="Edit" />
    </mvcSiteMapNode>

    <mvcSiteMapNode title="Categories" controller="Categories" action="Index" />
    <mvcSiteMapNode title="Suppliers" controller="Suppliers" action="Index" />

</mvcSiteMapNode>
</mvcSiteMap>

我在上面的站点地图中有resourceKey="Products",在Products.title文件夹中的Web.sitemap.resx文件夹中有相应的App_GlobalResources。遵循以下说明:http://msdn.microsoft.com/en-us/library/ms178427(VS.80).aspx

我在这里缺少什么?

修改

这已在changeset 52831

中实施

2 个答案:

答案 0 :(得分:6)

由于该项目的所有者Maarten Balliauw,MvcSitemapProvider的最新版本(在撰写本文时,版本2.2.1)已经解决了这个问题。

MvcSitemapProvider的隐式本地化几乎与默认的SitemapProvider(see How to: Localize Site-Map Data)完全相同。唯一的区别是,在站点地图文件本身中设置<siteMap enableLocalization="true">,您必须在Web.Config文件(as described here)中设置此项。

答案 1 :(得分:2)

您需要从MvcSiteMapNode中的资源文件中访问菜单项的标题

<mvcSiteMapNode title="$resources:MenuLocaliSations,Dashboard" controller="Dashboard" action="Index" changeFrequency="Always" updatePriority="Normal">