0

我有网址: http ://www.abc.com/Results?Id=1111-11&Name=abcd

我想要如下网址: http ://www.abc.com/US/Name/abcd

我如何隐藏操作名称(结果)以及参数(Id,名称)。我只想隐藏不删除。id、name 和 action name 应该传递给控制器​​。

4

1 回答 1

2

您无法删除该 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

你有身份证和名字。

为了实现这一点,您可以具有以下路由定义:

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

您可能遇到的下一个问题是名称是否包含一些特殊字符。Scott Hanselman 在他的blog post. 解决这个问题的正确方法是从名称中删除所有危险字符。这for example the filtering function是 StackOverflow 使用的。所以想法是通过这个过滤函数传递名称并生成一个所谓的slug,它对 SEO 友好,但在您的控制器操作中不需要,因为您已经有了相应的 id:

public ActionResult Results(int id)
{
    ...
}
于 2013-03-13T07:06:34.847 回答