0

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

4

1 回答 1

0

我为这个项目选择了 MVC,但是我有机会稍微剖析 ASP.NET 请求管道,并根据需要实施了自定义路由解决方案。

于 2012-12-31T16:53:10.703 回答