【发布时间】:2014-11-20 13:19:40
【问题描述】:
我在我的项目中使用以下路由
routes.MapRoute(
"ProductRoute", // Route name
"product/{id}/{title}", // URL with parameters
new { controller = "product", action = "Index", id = UrlParameter.Optional }, // Parameters defaults
new[] { "PriceCompare.Controllers" }
);
当前的问题是如何返回显示 url。可以通过以下任一方式访问 URL:
- http://mywebsite.com/product/22/full-title
- http://mywebsite.com/product/22/half
- http://mywebsite.com/product/22/
一切都很好,因为所有这些 URL 都重定向到所需的位置。但是,我认为即使有人使用第二种或第三种方法,浏览器中的返回 URL 也应该显示第一个 URI。
就像 StackOverflow。例如,如果您访问以下网址
stackoverflow.com/questions/734249/,您的浏览器地址将在浏览器中显示完整的 URL stackoverflow.com/questions/734249/asp-net-mvc-url-routing-具有多个路由值
如何做到这一点?
【问题讨论】:
-
您应该评估
title参数对您的操作。如果它是空的,你应该从数据库中获取标题并重定向到带有标题的url -
当有人进入特定 URL 时,您需要执行 301 重定向,这就是 StackOverflow 的工作原理。你如何选择重定向可能是个问题。
-
您可以使用操作过滤器as per this example
标签: c# asp.net-mvc-3 url-routing