0

私は小さな学校のプロジェクト、ASP.NET C# Web サイトに取り組んでいます。Global.asaxファイルを使用して要求ロジックを集中化する Web アプリケーションを使用しています。

いずれにせよ、同僚と私はグループのコーディングを担当しており、どちらも経験豊富な PHP 開発者として参加しています。私たちはどちらも、PHP フレームワークLaravelで使用されるアーキテクチャ スタイルでの作業を楽しんでおり、ルート (に関連付けられたコールバック) を「コントローラー」として使用しており、(四角いペグであり、丸い穴の問題であるにもかかわらず) この機能を複製しようとしています。事業。

これは簡単な作業ではありません。この機能の複製を開始する試みIRouteHandlerとして、インターフェイスを実装しました。CallbackRouteHandler

public class CallbackRouteHandler : IRouteHandler
{
    public Func<RequestContext, IHttpHandler> Callback { get; protected set; }

    public CallbackRouteHandler(Func<RequestContext, IHttpHandler> callback)
    {
        this.Callback = callback;
    }

    public IHttpHandler GetHttpHandler(RequestContext requestContext)
    {
        return this.Callback(requestContext);
    }
}

残念ながら、これは私が得た限りです。ASP.NET Page Life Cycle Overviewを読んで、プロセス全体をよりよく理解しようとしています。

私たちが行き詰まっているのは、特定のルート コールバックのスコープ内でASPX ファイルをプログラムで読み込むことです (むしろ、Pageオブジェクトとしてインスタンス化します)。コールバックの範囲内で、次のような、かなり簡単な方法を実現できることを期待していました。

// instantiate the target ASPX page object
OurSite.SomeNamespace.SomePage page = new OurSite.SomeNamespace.SomePage();

// manipulate the page object, setting public properties, etc.
page.SomeControl.Text = "Foobar!";

// eventually "render" the file to somehow; at this point, the
// page and it's associated code-behind events take control
page.Render();

両方を理解するのに苦労しています:1)これを行う方法は?2)いつ (前述のページのライフサイクルに関連して) これを行うか。

この種の機能を実現するにはどうすればよいでしょうか? ASP.NET によって隠されているこのプロセスは一見非常に複雑に見えますが、確かに他の人は以前にこの道をたどっていました。

4

1 に答える 1

0

このプロジェクトでは MVC を使用しましたが、その後、ASP.NET 要求パイプラインを少し分析する機会があり、必要に応じてカスタム ルーティング ソリューションを実装しました。

于 2012-12-31T16:53:10.703 に答える