単純なページルーティングを実装しようとしていますが、何らかの理由で機能していません。私はほとんどすべてをクロスチェックしましたが、それでも何も機能していないようです。
すべてのアクティビティを一覧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
私は多言語のウェブサイトで働いています。そこでは、特定のフォルダの下に別々の言語固有のファイルを保持しています。enの下の英語と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 URLルーティングを機能させるには、web.configファイルに変更を加える必要がありますか。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
。しかし、なぜエラーが発生し続けるのかわかりません。