我通过NuGet将Microsoft.Asp.Net.FriendlyUrls.Core.dll安装到现有的asp.net 4.5 webforms网站。
我在 RouteConfig 文件
中有以下内容 public static void RegisterRoutes(RouteCollection routes)
{
var settings = new FriendlyUrlSettings();
settings.AutoRedirectMode = RedirectMode.Permanent;
routes.EnableFriendlyUrls(settings);
routes.MapPageRoute("frUrl", "frurltest/{id}", "~/frurltest.aspx");
}
**Global.asax**
void Application_Start(object sender, EventArgs e)
{
RouteConfig.RegisterRoutes(System.Web.Routing.RouteTable.Routes);
}
在frurltest.aspx中,我尝试从RouteData获取“id”,如下所示:
string id = String.Empty;
if (RouteData.Values["id"] != null)
{
id = RouteData.Values["id"].ToString();
}
Response.Write("id= " + id);
使用以下网址:http://localhost:48484/frurltest/2
我没有得到“id”的值。 RouteData.Values.Count = 0。
知道我在这里缺少什么吗?
注意:除了获取routedata之外,友好的网址功能正在运行,即我导航到/frutltest.aspx,它更改为/ frutlest,我可以使用$ RouteUrl生成链接。
更新 经过试验和错误,我注意到如果我在MapPageRoute之后移动了EnableFriendlyUrls,它就可以了。即。
public static void RegisterRoutes(RouteCollection routes)
{
routes.MapPageRoute("frUrl", "frurltest/{id}", "~/frurltest.aspx");
var settings = new FriendlyUrlSettings();
settings.AutoRedirectMode = RedirectMode.Permanent;
routes.EnableFriendlyUrls(settings);
}
我看到的所有示例都用作我最初的非工作代码。不知道为什么它适合他们而不适合我。这是一个类似的问题:RouteData.Values stays Empty
答案 0 :(得分:0)
我知道现在回答为时已晚,但对我而言,当我将URL的第一个子句更改为与aspx页面不同的内容时,它才起作用。
只需在"frurltest/{id}"
& "~/frurltest.aspx"
frurltest
应该有所不同,例如:routes.MapPageRoute("frUrl", "frurltestNEW/{id}", "~/frurltest.aspx");