我在Asp.net Mvc应用程序中有Route Config,如下所示:
RouteConfig
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "Default2",
url: "{controller}/{action}/{id}/{title}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional, title = UrlParameter.Optional }
);
}
我有三个控制器:文章, DevSection 和主页
[SiteMapTitle("title")]
public ActionResult Index(int id, string title)
{
objlstproc = getproc();
Proc objproc = objlstproc.Find(s => s.id == id);
return View(objproc);
}
我的网站地图代码
<mvcSiteMapNode title="Home" controller="Home" action="Index">
<mvcSiteMapNode title="DevSection" controller="DevSection" action="Index" key="DevSection">
<mvcSiteMapNode title="Articles" controller="DevSection" action="Article" key="Articles">
<mvcSiteMapNode title="" controller="Articles" action="Index" preservedRouteParameters="id,title" />
</mvcSiteMapNode>
</mvcSiteMapNode>
现在我使用
@Html.MvcSiteMap().SiteMapPath()
在我的布局中,我收到此错误
带有键&#39; Articles_Articles_Index_GET __&#39;的节点没有标题&#39;组。标题是每个节点的必填字段。
所以我为下面的行设置xxx字符串的标题的默认字符串
<mvcSiteMapNode title="xxx " controller="Articles" action="Index" preservedRouteParameters="id,title" />
现在工作申请正常,现在我想用这个网址转到文章控制器和索引操作:
http://localhost:3754/Articles/index/1/whatever
我收到此错误
带有键&#39; Articles_Articles_Index_GET_xxx _&#39;的节点可能无法使用键标题添加路线值&#39;和价值的&#39; s&#39;到RouteValues字典,因为密钥是保留名称。保留名称是MvcSiteMapProvider内部使用的键,而不是字典值。
有效密钥可以是&#34; area&#34;,&#34; controller&#34;,&#34; action&#34;,以及与ISiteMapNode的属性名称不同的自定义参数。
您可以通过调用接受&#39; throwIfReservedKey&#39;的RouteValues.Add()或RouteValues.AddRange()的重载来抑制此错误消息。参数并为值传递false。请注意,如果您这样做,尝试将具有保留名称的密钥添加到RouteValues字典将无声地失败。
但如果我使用http://localhost:3333/Articles/index/1 要么 http://localhost:3333/Articles/index?id=1&&titile=ds
站点地图工作对我很好......
但我想从中使用 http://localhost:3754/Articles/index/1/whatever 在我的网站上。
感谢答案 0 :(得分:0)
我将标题名称更改为t(无论如何)。因为标题是站点地图中的键或保留,并与我的路线标题冲突,例如:url:“{controller} / {action} / {id} / {t}”, 默认值:new {controller =“Home”,action =“Index”,id = UrlParameter.Optional,t = UrlParameter.Optional}不要感谢我,谢天谢地