我刚刚创建了一个SiteMap控制器,它为我的网站生成一个站点地图。我正在尝试输出我在整个网站上列出的产品的网址。例如,在我的产品列表视图中,我有以下代码:
Url.Action("Details", "Products", new { id = item.Id, productName = Url.ToFriendlyUrl(item.Brand + " " + item.Colour + " " + item.Size + " " + item.Title) })
输出此网址:
/产品/信息/ 1330 /珊妮蓝色小迷彩短裤
映射到此路线:
routes.MapRoute(
"ViewProduct",
"products/{cat}/{id}/{productName}",
new { controller = "products", action = "Details", cat = "", id = "", productName = "" },
new string[] { "EliteFightKit.Web.Controllers" }
);
在我的SiteMap控制器中,但我正在使用此代码生成网址:
Url.Action("Details", "Products", new { id = item.Id, productName = Url.ToFriendlyUrl(item.Brand + " " + item.Colour + " " + item.Size + " " + item.Title) })
它正在输出:
/产品/信息/ 1330?产品名=珊妮蓝色小迷彩短裤
我哪里出错,如何让SiteMap网址与我的产品列表视图中创建的网址相关联?
劳埃德
答案 0 :(得分:1)
您的路线无效。可选参数只能出现在最后。在您的情况下,您有cat
路由参数,该参数是选项,位于网址的中间。因此,如果您希望选择此路线而不是默认路线,则需要为此参数提供值:
Url.Action("Details", "Products",
new { id = "123", productName = "foo", cat = "bar" })