我正在做一个小型学校项目,一个 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 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 隐藏起来的过程看起来非常复杂,但肯定其他人以前也曾走过这条路。