MVC SitemapProiver, добавление новой ссылки на карту сайта при возникновении действия

Мне нужно вставить несколько внешних ссылок на мою MVCSitemap. По сути, есть родительский узел под названием "LINKS", который я буду заполнять URL-адресами из другого приложения, через представление администратора. Мне было интересно, есть ли встроенный метод, который с помощью параметра может найти родительский узел и вставить в него дочерний узел, как будто я редактировал документ вручную.

1 ответ

Рекомендованным способом достижения этого является использование пользовательского IDynamicNodeProvider или ISiteMapNodeProvider для предоставления узлов и использование SiteMapCacheReleaseAttribute в методах действия, которые изменяют данные SiteMap для аннулирования кэша, чтобы 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] обычно не изменяет никаких данных.

Другие вопросы по тегам