【问题标题】:Adjusting URL showed in address bar with routing使用路由调整地址栏中显示的 URL
【发布时间】: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


【解决方案1】:
routes.MapRoute(null,
"{category}/{name}/{projectID}",       
new { controller = "Project", action = "Detail", projectID = UrlParameter.Optional }

);

会给你

/INDUSTRIE/Mailing/16

这就是你想要的吗?

【讨论】:

  • 否,在视图中,我想创建一个包含多个内容(项目 ID、名称、类别)的 ActionLink。 projectID 在动作控制器中用于获取正确的项目。接下来,在 URL 中我不想看到 projectID。我认为这是不可能的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-28
  • 1970-01-01
  • 2018-06-01
  • 1970-01-01
  • 2012-10-19
  • 2013-06-07
相关资源
最近更新 更多