我正在尝试将我的网址设置为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;
}
}
答案 0 :(得分:-1)
这些行应该是最后的, 所有MapRoute
次来电后
var settings = new FriendlyUrlSettings();
settings.AutoRedirectMode = RedirectMode.Permanent;
routes.EnableFriendlyUrls(settings);
如果之前运行过,那么Page.RouteData.Values
将为空。