在Route中设置自定义参数

时间:2013-08-23 12:33:22

标签: c# asp.net-mvc

我有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"

如何获得第一个链接模式?

1 个答案:

答案 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 }
);