【发布时间】:2011-11-13 08:28:53
【问题描述】:
我想优化我在网络浏览器中显示的 URL。我知道路由是完美的,但我不知道这是否可能是我想要的方式。我在列表中有一个项目列表。每个项目都有一个 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" }
);
生成的网址:
如您所见,projectID 始终添加到 URL 的末尾。我怎样才能避免这种行为?
谢谢。
【问题讨论】:
-
如果category和name都足够了,为什么还要在你的ActionLink中传递projectId呢?
-
@counsellorben:在地址栏中的 URL 中显示类别和名称很有趣。动作控制器中需要 ProjectID 才能将正确的项目传递给详细视图。
-
那么你应该接受 rouen 的回答,因为它会提供一个干净的 URL。
标签: asp.net-mvc asp.net-mvc-routing