MVC SitemapProiver,在操作发生时向站点地图添加一个新链接

本文关键字:添加 一个 链接 新链接 地图 站点 SitemapProiver 操作 MVC | 更新日期: 2023-09-27 18:05:18

我需要插入多个外部链接到我的MVCSitemap。基本上,有一个父节点称为'LINKS',我将填充来自另一个应用程序的url,通过一个管理视图。我想知道是否有一个内置的方法,给定一个参数可以找到一个父节点,并插入到它的子节点,好像我是手动编辑文档。

MVC SitemapProiver,在操作发生时向站点地图添加一个新链接

实现这一点的推荐方法是使用自定义IDynamicNodeProvider或ISiteMapNodeProvider来提供节点,并在修改SiteMap数据的操作方法上使用SiteMapCacheReleaseAttribute来使缓存无效,以便SiteMap将在下一次访问时加载新节点。

[HttpPost]
[SiteMapCacheRelease]
public ActionResult Edit(int id, Product product)
{
    try
    {
        using (var db = new CRUDExample())
        {
            var model = (from p in db.Product
                     where p.Id == id
                     select p).FirstOrDefault();
            if (model != null)
            {
                model.Name = product.Name;
                db.SaveChanges();
            }
        }
        return RedirectToAction("Index");
    }
    catch
    {
        return View();
    }
}

SiteMapCacheReleaseAttribute应该放在所有添加、编辑和删除操作方法上,你希望看到的变化立即发生,并且通常应该只应用于[HttpPost]端,因为[HttpGet]通常不会改变任何数据。