0
我有网址: http://www.abc.com/Results?Id=1111-11&Name=abcd如何在MVC使用路由来隐藏URL参数2
我想网址,如下所示:
如何隐藏动作名称(结果)以及参数(标识,名称)。 我只想隐藏不移除。 id,名称和操作名称应传递给控制器。
我有网址: http://www.abc.com/Results?Id=1111-11&Name=abcd如何在MVC使用路由来隐藏URL参数2
我想网址,如下所示:
如何隐藏动作名称(结果)以及参数(标识,名称)。 我只想隐藏不移除。 id,名称和操作名称应传递给控制器。
您无法删除该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)
{
...
}