【发布时间】:2014-09-22 15:48:51
【问题描述】:
我通过 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。
知道我在这里缺少什么吗?
注意: 除了获取路由数据之外,友好的 url 功能正在工作,例如我导航到 /frutltest.aspx,它被更改为 /frutest,我可以使用 $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
【问题讨论】:
-
Response.Write,自从 经典 天以来就没有见过这个了! -
当标签成为问题短语的自然部分时,我们通常不会从标题中删除它们...我们会从标题中删除标签,当它们只是添加到开头时或结束。
-
@ErikPhilips 所以据我所知..“asp.net 中的FriendlyURLs .....”是否允许?
-
当标签自然是问题的一部分时,您通常可以在标题中使用标签。例如
Create a relationship in Entity Framework for my models?。通常不接受的是标签只是被扔到乞求或结尾的问题,删除它们不会改变句子的问题。例如Entity Framework - Create a relationship for my models。 It may be subtle but it's preferred. -
遇到同样的问题...这真的很奇怪。感谢您的解决方案:)
标签: asp.net asp.net-mvc friendly-url