urlHelper.RouteUrl未生成正确的URL

use*_*544 2 asp.net-mvc-3

生成链接时Code位于控制器的Indexx中.因此链接以这种形式生成

Wk/Index/XX/YYYY
Run Code Online (Sandbox Code Playgroud)

网址代码是

 url = urlHelper.RouteUrl("Wk", new { slug});
Run Code Online (Sandbox Code Playgroud)

但我需要链接将以这种形式

Wk/C/XXX
Run Code Online (Sandbox Code Playgroud)

这里c是另一个Action名称如何实现.

我的全球Asax看起来像

        routes.MapRoute(
            "Default", // Route name
            "{controller}/{id}", // URL with parameters
            new { controller = "Home", action = "Index" , id = UrlParameter.Optional } // Parameter defaults
        );

        routes.MapRoute(
            "Wk", // Route name
            "{controller}/{action}/{slug}/{id}", // URL with parameters
            new { controller = "Wk", action = "c", slug = "", id = UrlParameter.Optional } // Parameter defaults
        );

        routes.MapRoute(
            "Book", // Route name
            "{controller}/{id}/{pageNo}", // URL with parameters
            new { controller = "Book", action = "Index",id = UrlParameter.Optional,pageNo = UrlParameter.Optional } // Parameter defaults
        );

        routes.MapRoute(
            "UserArea", // Route name
            "{controller}/{slug}/{id}", // URL with parameters
            new { controller = "UserArea", action = "Index", slug = UrlParameter.Optional, id = UrlParameter.Optional } // Parameter defaults
        );
Run Code Online (Sandbox Code Playgroud)

Dar*_*rov 6

试试这样:

var url = urlHelper.RouteUrl("Wk", new { action = "C", slug = "XXX" });
Run Code Online (Sandbox Code Playgroud)

  • 默认操作已在`MapRoute()`中设置.为什么框架需要在`RouteUrl()`中明确指定它?这太不自然了...... (3认同)