Я использую MvcSitemapProvider в своем приложении MVC4. Моим контроллерам нужны параметры для разрешения отношений 1: n в базе данных. Например: Магазин> Пункт> ItemDetails. Допустим, пользователь просматривает детали ItemXYZ и нажимает на Shop>. Item> ItemDetails Я хочу, чтобы приложение снова отображало ItemXYZ. Таким образом, MvcSitemapProvider должен будет хранить ItemID. Странное поведение заключается в том, что когда я меняю любой код, запустите его -> он работает. Если я остановлю его, перезапустите его (точно таким же кодом), это не сработает. Если я снова сменил код -> он снова работает. Так как это возможно. Это моя карта сайта-конфигурации:MvcSitemapProvider параметры иногда иногда работают
<?xml version="1.0" encoding="utf-8" ?>
<mvcSiteMap xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://mvcsitemap.codeplex.com/schemas/MvcSiteMap-File-4.0"
xsi:schemaLocation="http://mvcsitemap.codeplex.com/schemas/MvcSiteMap-File-4.0 MvcSiteMapSchema.xsd">
<mvcSiteMapNode title="Werk" controller="Settlement" action="Index">
<mvcSiteMapNode title="Abteilung" controller="Section" action="Index" preservedRouteParameters="settlementID" inheritedRouteParameters="settlementID">
<mvcSiteMapNode title="Maschine" controller="Machine" action="Index" preservedRouteParameters="sectionID" inheritedRouteParameters="sectionID"/>
</mvcSiteMapNode>
</mvcSiteMapNode>
</mvcSiteMap>
И это контроллер (все выглядят совсем то же самое):
public class SectionController : ControllerBase
{
//
// GET: /Section/
[SiteMapPreserveRouteData]
public ActionResult Index(int settlementID)
{
using (var e = new ClapEntities())
{
return View(e.Sections.Where(x => x.SettlementID == settlementID).ToList());
}
}
}
Это рабочий код, если я не перезапустить приложение. Если я перезапущу приложение, это не сработает. Но если я прокомментирую, например. [SiteMapPreserveRouteData] -Атрибут, он будет работать еще раз. Поэтому я перезапускаю приложение, и я больше не работаю -> раскомментируйте атрибут, и он снова работает, пока я его не перезапущу.
Так как это возможно?
EDIT: Это не имеет никакого отношения к изменению кода. Он работает, когда я выбираю rebuild в меню визуальной студии. Если нет, это не будет работать дважды.
FYI - Я сделал свое дело (во второй раз) с Маартеном об удалении SiteMapPreserveRouteDataAttribute из проекта. Проанализировав его внимательно, я не понимаю, как это может сделать что-нибудь полезное. Я рекомендую его использовать. – NightOwl888