簡體   English   中英

自定義ASP.NET基於回調的路由; 動態ASPX頁面實例化和呈現

[英]Custom ASP.NET callback-based routing; dynamic ASPX page instantiation and rendering

我正在做一個小型學校項目,一個ASP.NET C#網站。 我們正在使用Web應用程序,使用Global.asax文件集中請求邏輯。

無論如何,我和我的同事負責我們小組的編碼,我們倆都是經驗豐富的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頁面生命周期概述》 ,試圖更好地理解整個過程。

我們所堅持的是在給定的路由回調范圍內以編程方式加載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隱藏的此過程看似非常復雜,但是肯定其他人以前已經走過了這條路。

我參加了該項目的MVC,但是從那時起,我就有機會稍微剖析了ASP.NET請求管道,並根據需要實施了自定義路由解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM