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