您无法删除该 ID。如果您将其从路由中删除,则无法再将其传递给服务器。你认为它会来自哪里?你可以做的是有以下 SEO 友好的 url 模式:
http://www.abc.com/US/1111-11/abcd
就像 StackOverflow 处理问题一样。查看地址栏,你会看到:
https://stackoverflow.com/questions/15378465/how-to-hide-parameter-in-url-using-routing-in-mvc-2
你有id和名字。
为了实现这一点,您可以使用以下路由定义:
routes.MapRoute(
name: "ResultsRoute",
url: "us/{id}/{name}",
defaults: new { controller = "Search", action = "Results" }
);
您可能遇到的下一个问题是名称是否包含一些特殊字符。 Scott Hanselman 在他的blog post 中详细解释了这一点。解决这个问题的正确方法是从名称中删除所有危险字符。这是 StackOverflow 使用的for example the filtering function。所以想法是通过这个过滤函数传递名称并生成一个所谓的 slug,它对 SEO 友好但在您的控制器操作中不需要,因为您已经有了相应的 id:
public ActionResult Results(int id)
{
...
}