1

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

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

4

1 回答 1

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 }
);
于 2013-08-23T12:36:33.407 回答