我创建了一个工作正常的MVC应用程序。现在我想在url中添加自定义键并解析它们,它只适用于一种类型的Url而不适用于下一种,所以它的问题是什么。
我的路线条目是:
routes.MapRoute(null,"client_{client_key}",
new
{
controller = "templates", action = "contents_page"
});
routes.MapRoute(null,"client_{client_key}/{keyword}",
new
{
controller = "templates", action = "contents_pagen"
});
我的网址:
http://www.lmenaria.com/client_1
。http://www.lmenaria.com/client_2
。以上网址正常工作。
http://www.lmenaria.com/client_1/home.html
。http://www.lmenaria.com/client_2/home.html
。这两种类型的网址都不起作用,我在home.html
操作中的关键字参数中未获得contents_pagen
。
我的行动:
public ActionResult contents_pagen(string client_key, string keyword, FormCollection frmColl)
{
}
所以请告诉我如何解决这个问题。
答案 0 :(得分:0)
交换您的路线条目,以便首先找到更具体的路线:
routes.MapRoute(null,"client_{client_key}/{keyword}",
new
{
controller = "templates", action = "contents_pagen"
});
routes.MapRoute(null,"client_{client_key}",
new
{
controller = "templates", action = "contents_page"
});
在请求管道中,操作方法解析程序看到您有一个client_key路由参数,并且它与第一个可用路由匹配。
通过首先放置带有关键字param的路由,只有当您的URL同时包含client_key和keyword params时,MVC才会匹配该路由。否则,如果您只有client_key参数,它将跳过第一个路径并匹配第二个路径。