调整URL显示在带有路由的地址栏中

时间:2011-11-13 08:28:53

标签: asp.net-mvc asp.net-mvc-routing

我想优化我在网络浏览器中显示的网址。我知道路由是完美的,但我不知道它是否可能以我想要的方式。我在列表中有一个项目列表。每个项目都有ID,名称和类别。导航到详细信息产品页面时,显示的URL应为" / category / name"。我知道我可以在ActionLink中传递ID,类别和名称,并调整Global.asax中的路由。我已经这样做但我仍然拥有与URL的其余部分连接的ID。这太丑了。

以下是一个例子:

我认为的ActionLink:

@Html.ActionLink(@p.Name, "Detail", new { projectID = @p.ProjectID, category = @p.Category, name = @p.Name })

Global.asax:

routes.MapRoute(null,
    "{category}/{name}",       
    new { controller = "Project", action = "Detail" }
);

结果网址:

enter image description here

如您所见,projectID始终添加到URL的末尾。我该如何避免这种行为?

感谢。

1 个答案:

答案 0 :(得分:2)

routes.MapRoute(null,
"{category}/{name}/{projectID}",       
new { controller = "Project", action = "Detail", projectID = UrlParameter.Optional }

);

会给你

/INDUSTRIE/Mailing/16

是你想要的吗?