Asp.net mvc 3 url.Action和Html.ActionLink生成的url不正确

Asp.net mvc 3 url.Action和Html.ActionLink生成的url不正确,asp.net-mvc-3,routes,Asp.net Mvc 3,Routes,我有以下路线: routes.MapRoute( "NewsRoute", "News/{newsId}/{newsTitle}", new { controller = "News", action = "News", newsId = UrlParameter.Optional, newsTitle = UrlParameter.Optional } ); routes.MapRoute(

我有以下路线:

routes.MapRoute(
    "NewsRoute",
    "News/{newsId}/{newsTitle}",
    new {
        controller = "News",
        action = "News",
        newsId = UrlParameter.Optional,
        newsTitle = UrlParameter.Optional
    }
);
routes.MapRoute(
    "Default", // Route name
    "{controller}/{action}/{id}", // URL with parameters
    new { controller = "Home", action = "Home", id = UrlParameter.Optional } // Parameter defaults
);
使用方法:

@Url.Action("News", "News", new { newsId = "", newsTitle = "" })
我希望有“/News”url,但正在生成“/News/News”。我想是使用了默认路线。
所以问题是为什么跳过新闻路线?

解决方案是使用两个可选参数和操作将路线拆分为两个单独的操作:

routes.MapRoute(
    "NewsRoute",
    "News", new {
        controller = "News",
        action = "Index"
    }
);

routes.MapRoute(
    "Specific News",
    "News/{id}/{title}",
    new {
        controller = "News",
        action = "News",
        title = UrlParameter.Optional
    }
);

解决方案是使用2个可选参数将路线和操作拆分为两个单独的操作:

routes.MapRoute(
    "NewsRoute",
    "News", new {
        controller = "News",
        action = "Index"
    }
);

routes.MapRoute(
    "Specific News",
    "News/{id}/{title}",
    new {
        controller = "News",
        action = "News",
        title = UrlParameter.Optional
    }
);

看起来像2个禁止使用的可选辅助设备看起来像2个禁止使用的可选辅助设备