为什么RouteData值始终为空?

时间:2017-04-06 22:28:09

标签: c# asp.net-mvc web-applications

我正在尝试将我的网址设置为http://localhost/PDM/Welcome/Florida

其中PDM是虚拟目录,欢迎是主页。 和佛罗里达州的论点已经过去了。

网址似乎正在工作,但我无法看到佛罗里达州通过。

*更新*

没有控制器。 Visual Studios示例......

routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new {  action = "Index", id= UrlParameter.Optional }
);

...没有在defaults对象中指定控制器。我使用了他们所拥有的并稍微改了一下,将默认页面替换为欢迎使用Index and Division而不是Index。分区将始终在URL中,因此它似乎比ID更好。

我尝试了以下内容。

public static class RouteConfig {
    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: "Default",
            url: "{controller}/{action}/{division}",
            defaults: new {  action = "Welcome", division = UrlParameter.Optional }
        );
    }
}

2 //以及许多其他方式

// this statement would be a lie there is not controller pdm is the root
routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{division}",
            defaults: new { controller="PDM"  action = "Welcome", division = UrlParameter.Optional }
        );
// the ideal way
routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{division}",
            defaults: new {  action = "Welcome", division = "Florida" }
        );
// and many more not listed

我试图在prerender部分的masterpage.master中提取参数

protected override void OnPreRender(EventArgs e) {
        base.OnPreRender(e);

        RouteData rd = RouteTable.Routes.GetRouteData(new HttpContextWrapper(HttpContext.Current));

        if(rd != null){
            int i = rd.values.Count;
        }

    }

1 个答案:

答案 0 :(得分:-1)

这些行应该是最后的, 所有MapRoute次来电后

var settings = new FriendlyUrlSettings();
settings.AutoRedirectMode = RedirectMode.Permanent;
routes.EnableFriendlyUrls(settings);

如果之前运行过,那么Page.RouteData.Values将为空。