我有2条路线
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "Plugin",
url: "{pluginName}/{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
我想使用Html.Action助手并设置第二条路线的“pluginName”参数。
我尝试使用下一个代码
@Html.Action("Index","Person",new RouteValueDictionary { { "pluginName", "myPlugin" } });
并获得类似
的链接http://mydomain/myplugin/Person/index
但我已经
了http://mydomain/Person/index?pluginName="myPlugin"
如何获得第一个链接模式?
答案 0 :(得分:2)
首先注册您更具体的路线。路由引擎按照您注册的顺序评估路由。因此,如果您在早期注册了一个相当通用的路由(您这样做),路由引擎将使用它并将其他值附加为QueryString参数(您可以看到)。
试试这个:
routes.MapRoute(
name: "Plugin",
url: "{pluginName}/{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);