C# 路由,路由数据为空

C# 路由,路由数据为空,c#,asp.net,.net,asp.net-mvc,C#,Asp.net,.net,Asp.net Mvc,我想登记两条路线 一个在/上,另一个在/details/{username} 在我的RouteConfig.cs中,我尝试了: public static void RegisterRoutes(RouteCollection routes) { var settings = new FriendlyUrlSettings(); settings.AutoRedirectMode = RedirectMode.Permanent; routes.EnableFriendl

我想登记两条路线

一个在/上,另一个在/details/{username}

在我的RouteConfig.cs中,我尝试了:

public static void RegisterRoutes(RouteCollection routes)
{
    var settings = new FriendlyUrlSettings();
    settings.AutoRedirectMode = RedirectMode.Permanent;
    routes.EnableFriendlyUrls(settings);

    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    routes.MapRoute(
            name: "Details",
            url: "details/{username}",
            defaults: new { action = "Details", username = "" }
        );

    routes.MapRoute(
            name: "Default",
            url: "{controleur}",
            defaults: new { action = "Index"}
        ); 
}
在我的Details.aspx.cs中,我有:

public partial class _Details : Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        var b = RouteData.Values.Keys.Count;
    }
}

但是,我无法在RouteData中获取用户名值。

这就是为MVC项目映射路线的方式。您似乎正在使用Web表单。 以下是如何映射Web表单的路由:

routes.MapPageRoute("Details", 
                    "details/{username}", 
                    "Details.aspx", 
                    false, 
                    new RouteValueDictionary {{"action", "Details"}, {"username", ""}});

默认路由是由Visualstudio生成的。。。我只是试着复制。。。我测试您的解决方案bug,我有一个例外:VirtualPath必须是非空的