1

単純なページルーティングを実装しようとしていますが、何らかの理由で機能していません。私はほとんどすべてをクロスチェックしましたが、それでも何も機能していないようです。

すべてのアクティビティを一覧Activities.aspx表示し、アクティビティのアクティビティの詳細をActivity-Details.aspxページに表示します。

Activities.aspxURLルーティングの実装後のページ 上のリンクは次のようなものです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。しかし、なぜエラーが発生し続けるのかわかりません。

4

1 に答える 1

1

ルートデバッガーをインストールして有効にします。各ルートがヒットしている(ヒットしていない)理由とその理由がわかります。

ちなみに、URLのこの部分はルートにマッピングされていません:website / en /

于 2012-07-22T07:24:06.213 に答える