[英]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.