2013-03-13 58 views

回答

2

您无法删除该ID。如果从路由中删除它,则不再有任何方法将其传递到服务器。你认为它会来自哪里?你可以做的是有以下搜索引擎友好的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 

你有标识和名称。

为了实现这一目标,你可以有以下路由定义:

routes.MapRoute(
    name: "ResultsRoute", 
    url: "us/{id}/{name}", 
    defaults: new { controller = "Search", action = "Results" } 
); 

你可能会遇到的一个问题是,如果名称中包含一些特殊的字符。 Scott Hanselman在他的blog post中详细解释了这一点。解决这个问题的正确方法是从名称中删除所有危险字符。这里是StackOverflow使用的for example the filtering function。这样的想法是通过这个过滤功能,将名字传下去,并产生所谓的蛞蝓这是搜索引擎友好的,但没有必要在你的控制器操作,因为你已经有了相应的ID:

public ActionResult Results(int id) 
{ 
    ... 
}