我正在尝试实现简单的页面路由,由于某种原因它不起作用。我已经交叉检查了几乎所有内容,但似乎仍然没有任何效果。
我在页面上列出所有活动Activities.aspx
并显示活动活动的详细信息Activity-Details.aspx
。
Activities.aspx
URL路由实施后页面
上的链接就像http://localhost:49442/website/en/activity/en-US/44/31/event-title-will-go-here
当我单击链接时,它总是向我显示错误消息
The resource cannot be found.
Description: HTTP 404. The resource you are looking for (or one of its dependencies) could have been removed, had its name changed, or is temporarily unavailable. Please review the following URL and make sure that it is spelled correctly.
Requested URL: /website/en/activity/en-US/44/31/event-title-will-go-here
我正在一个多语言网站上工作,在该网站上,我将特定语言的特定文件保存在特定文件夹下的英语和阿拉伯语下的ar和文件夹结构下,例如
/
/en
/en/Activities.aspx
/en/Activity-Details.aspx
...
/ar
/ar/Activities.aspx
/ar/Activity-Details.aspx
...
/images
/css
我有为其他项目工作的 URL 路由,但在这个项目中我遗漏了一些东西。
Global.asax 文件的代码
void Application_Start(object sender, EventArgs e)
{
// Code that runs on application startup
RegisterRoutes(RouteTable.Routes);
}
public static void RegisterRoutes(RouteCollection routes)
{
routes.Ignore("{resource}.exe/{*pathInfo}");
routes.MapPageRoute("ActivityRoute", "activity/{Language}/{EventID}/{PageID}/{EventTitle}", "~/en/Activity-Details.aspx", false,
new RouteValueDictionary {
{ "Language", "en-US"},
{ "EventID", "0" },
{ "PageID", "0"},
{ "EventTitle", "event-not-found" }},
new RouteValueDictionary {
{"Language", "[a-z]{2}-[a-z]{2}"},
{ "EventID", "[0-9]{1,8}" },
{ "PageID", "[0-9]{1,8}" }
});
}
WEB.Config 我是否需要对 web.config 文件进行任何更改才能使 url 路由正常工作。我在 web.config 中有以下条目。我删除了它,但它仍然无法正常工作..
<system.web>
<httpModules>
<add name="RoutingModule" type="System.Web.Routing.UrlRoutingModule"/>
<add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
</httpModules>
</system.web>
我也包括using System.Web.Routing
在Activity-Details.aspx
页面上。但我不知道为什么我不断收到错误。