我有一个只有几页的简单 ASP.NET WebForms 项目,我想使用友好的 URL(不仅用于 SEO,还用于 URL 的本地化)。我在这个项目中使用 .NET 4.5,并尝试使用 Microsoft.AspNet.FriendlyUrls nuget 包,看起来它可能会有所帮助。但是有一个问题。
我在 Global.asax 中有这个:
void Application_Start(object sender, EventArgs e)
{
// Code that runs on application startup
BundleConfig.RegisterBundles(BundleTable.Bundles);
RouteConfig.RegisterRoutes(RouteTable.Routes);
}
RouteConfig 类如下所示:
public static class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.MapPageRoute("HowItWorks", "ako-to-funguje", "~/HowItWorks.aspx");
routes.MapPageRoute("AboutUs", "o-nas", "~/AboutUs.aspx");
routes.MapPageRoute("Contact", "kontakt", "~/Contact.aspx");
var settings = new FriendlyUrlSettings();
settings.AutoRedirectMode = RedirectMode.Permanent;
routes.EnableFriendlyUrls(settings);
}
}
如果您通过 /HowItWorks 和 /ako-to-funguje (这是斯洛伐克语言环境)访问它,我想显示相同的页面。
现在我正在接近实际问题。当我使用本地化路线之一(例如/ako-to-funguje)访问站点时,Request.GetFriendlyUrlFileVirtualPath() 返回空字符串(但我想获得“~/HowItWorks.aspx”,我想在 master 中做一些事情页)。
string pageFileName = Request.GetFriendlyUrlFileVirtualPath();
switch (pageFileName)
{
case "~/AboutUs.aspx":
//do some stuff
break;
case "~/HowItWorks.aspx":
//do some stuff
break;
case "~/Contact.aspx":
//do some stuff
break;
default:
break;
}
如果我使用 /HowItWorks URL 访问站点,则 Request.GetFriendlyUrlFileVirtualPath() 按预期返回“~/HowItWorks.aspx”。
通过 /HowItWorks 和 /ako-to-funguje 访问站点时,知道如何从 Request.GetFriendlyUrlFileVirtualPath() 获取“~/HowItWorks.aspx”吗?