C# MvcSitemapProvider参数有时有效有时无效
我正在MVC4应用程序中使用MvcSitemapProvider。我的controlleractions需要参数来解析数据库中的1:n关系。例如:商店>商品>项目详细信息。假设用户查看ItemXYZ的详细信息并单击Shop>Item>ItemDetails,我希望应用程序再次显示ItemXYZ。因此MvcSitemapProvider必须存储itemID。奇怪的行为是,当我更改任何代码时,运行它->它可以工作。如果我停止它,重新启动它(使用完全相同的代码),它将不工作。如果我再次更改任何代码->它将再次工作。那怎么可能呢。这是我的站点地图配置:C# MvcSitemapProvider参数有时有效有时无效,c#,asp.net-mvc,asp.net-mvc-4,mvcsitemapprovider,C#,Asp.net Mvc,Asp.net Mvc 4,Mvcsitemapprovider,我正在MVC4应用程序中使用MvcSitemapProvider。我的controlleractions需要参数来解析数据库中的1:n关系。例如:商店>商品>项目详细信息。假设用户查看ItemXYZ的详细信息并单击Shop>Item>ItemDetails,我希望应用程序再次显示ItemXYZ。因此MvcSitemapProvider必须存储itemID。奇怪的行为是,当我更改任何代码时,运行它->它可以工作。如果我停止它,重新启动它(使用完全相同的代码),它将不工作。如果我再次更改任何代码->
<?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>
这是一个工作代码,除非我不重新启动应用程序。如果我重新启动应用程序,它将不工作。但如果我对[SiteMapPreserveRouteData]属性进行注释,它将再次起作用。因此,我重新启动应用程序,不再工作->取消对该属性的注释,它将再次工作,直到我重新启动它
那怎么可能呢
编辑:
它与更改代码无关。当我在VisualStudio菜单中选择“重建”时,它会工作。如果没有,它将无法工作两次。我不确定您正在执行的示例,但此配置存在一些问题:
/sitemaps.xml
端点中
我猜您希望在搜索引擎中为您的产品编制索引,因此我建议您改为使用将节点从数据库加载到站点地图中。这将把它们都存储在一个共享缓存中,因此它非常高效,而且它们不会在请求之间被“遗忘”。只需确保使用node.RouteValues.Add(“id”,product.id)设置每个产品的id,这样就有了一个唯一的id来进行匹配。我不确定您遵循的示例,但此配置存在一些问题:
/sitemaps.xml
端点中
我猜您希望在搜索引擎中为您的产品编制索引,因此我建议您改为使用将节点从数据库加载到站点地图中。这将把它们都存储在一个共享缓存中,因此它非常高效,而且它们不会在请求之间被“遗忘”。只需确保使用node.RouteValues.Add(“id”,product.id)设置每个产品的id,这样就有了一个唯一的id来进行匹配。我遇到了类似的情况。我必须做两件事:
preservedLoteParameters
属性中指定父节点项的settlementID
路由参数。根据inheritedRouteParameters,以下参数不够:
<mvcSiteMapNode title="Maschine" controller="Machine" action="Index" preservedRouteParameters="settlementID,sectionID"/>
希望这有帮助…我遇到了这样的事情。我必须做两件事:
preservedLoteParameters
属性中指定父节点项的settlementID
路由参数。根据inheritedRouteParameters,以下参数不够:
<mvcSiteMapNode title="Maschine" controller="Machine" action="Index" preservedRouteParameters="settlementID,sectionID"/>
希望这有帮助……我已经解决了这个问题,但仍然有完全相同的行为。如果我选择“重建”,它将工作一次@夜猫子888哦,我是usi
public ActionResult Index(int settlementID, int sectionID)
{
//....
}