質問

OK ... URLルーティングが正常に機能するようになりましたが、ターゲットページの値を実際に読み取る方法がわかりません。

ここでの1つの例は、RequestContextからRouteValueオブジェクトを使用することを示しています。現在、これらはすべてSystem.Web.Routing名前空間にありますが、誰もがこれらをMVCにのみ接続しているようです。 RequestContextはどこから来たのですか?

これらのパラメータの読み方???

クエリ文字列も空白です。

TIA! ケビン

役に立ちましたか?

解決

これを自分で解決しました... :)

さまざまなことをいじり始め、IHttpHandlerインターフェイスがGetHttpHandlerメソッドにRequestContextを提供しているのを見ました。

それで、ベースページクラスを変更しました(System.Web.UI.Pageと自分のページの間に常にレイヤーを配置し、単に目的のためにBasePageまたは類似の名前を付けます)。そこで、PVBasePageにパブリックプロパティを追加してRequestContextオブジェクトを受け取りました。

public RequestContext RequestContext { get; set; }

次に、ルーティングクラスのコードは次のとおりです。

IHttpHandler IRouteHandler.GetHttpHandler(RequestContext requestContext)
{
    // create the page object as my own page...
    var page = BuildManager.CreateInstanceFromVirtualPath(VirtualPath
        , typeof(PVBasePage)) as PVBasePage;
    // pass in the request context
    page.RequestContext = requestContext;
    // return this page in the form of a IHttpHandler
    return page as IHttpHandler;
}

したがって、サンプルコードのように、IHttpHandlerとしてインスタンスを直接作成する代わりに、独自のページとして作成します。リクエストコンテキストプロパティを設定し、IHttpHandlerとして呼び出し元にページを返します。

テスト済みで動作します。 WOO HOO!

これが将来の誰かに役立つことを願っています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top