gpt4 book ai didi

c# - 如何在运行时添加新的 MvcSitemapProvider 节点

转载 作者:太空狗 更新时间:2023-10-29 21:40:14 25 4
gpt4 key购买 nike

我正在使用 wcf 服务数据层开发类似网上商店的 asp.net mvc 4 网站。我的应用程序是用主类别、子类别和产品构建的。每个产品只能属于一个子类别,我的网址是这样的:

/maincategoryname/subcategoryname/{productid}/producttitle

以及相应的面包屑路径:

首页 > 主分类 > 子分类 > 产品名称

我目前正在使用 MvcSitemapProvider 生成我的导航菜单和面包屑。我将所有 url 加载为没有缓存的动态节点。这个解决方案适用于几个产品,但是当我添加 1000 个产品时,站点地图需要 6.5 秒来填充,这太长了。

我在 MvcSitemapProvider 中打开了缓存。这样应用程序加载速度更快。但是当用户添加新产品并导航到这个新产品(页面)时。该网址还不在站点地图文件中,因为它使用缓存。这样我的导航和面包屑就不会生成。

我的问题是:

是否可以在用户添加新产品后在运行时向站点地图添加新节点?

最佳答案

接受的答案现在有点过时了。在 MvcSiteMapProvider v4 中,DynamicNodeProvider 中不再有 GetCacheDescription() 方法。这似乎无论如何都行不通。

您现在可以 invalidate the cache manually通过在更新数据的操作方法上使用 [SiteMapCacheRelease] 属性:

[MvcSiteMapProvider.Web.Mvc.Filters.SiteMapCacheRelease]
[HttpPost]
public ActionResult Edit(int id)
{

// Update the record

return View();
}

或者通过调用静态方法:

MvcSiteMapProvider.SiteMaps.ReleaseSiteMap();

您现在还可以选择将框架扩展到 supply your own cache dependencies .

关于c# - 如何在运行时添加新的 MvcSitemapProvider 节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14708306/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com