C# 自定义基于ASP.NET回调的路由;动态ASPX页面实例化和呈现

C# 自定义基于ASP.NET回调的路由;动态ASPX页面实例化和呈现,c#,asp.net,routes,httphandler,iroutehandler,C#,Asp.net,Routes,Httphandler,Iroutehandler,我正在做一个小的学校项目,一个ASP.NETC#网站;我们正在使用一个Web应用程序,使用Global.asax文件来集中请求逻辑 无论如何,我的同事和我负责我们小组的编码工作,我们都是经验丰富的PHP开发人员。我们都非常喜欢使用PHP框架使用的体系结构风格,使用路由(与之相关的回调)作为“控制器”,并且(尽管这是一个方钉、圆孔问题)正在尝试为该项目复制该功能 这并非易事;为了开始复制此功能,我将该接口实现为CallbackRouteHandler: public class CallbackR

我正在做一个小的学校项目,一个ASP.NETC#网站;我们正在使用一个Web应用程序,使用
Global.asax
文件来集中请求逻辑

无论如何,我的同事和我负责我们小组的编码工作,我们都是经验丰富的PHP开发人员。我们都非常喜欢使用PHP框架使用的体系结构风格,使用路由(与之相关的回调)作为“控制器”,并且(尽管这是一个方钉、圆孔问题)正在尝试为该项目复制该功能

这并非易事;为了开始复制此功能,我将该接口实现为
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);
    }
}
我很难理解这两个问题:1)如何做到这一点2)何时(相对于上述页面生命周期)执行此操作


如何(如果有的话)实现这种功能?我发现这个被ASP.NET隐藏起来的过程似乎非常复杂,但肯定有其他人以前也走过这条路。

我在这个项目中使用了MVC,但后来我有机会对ASP.NET请求管道进行了一些剖析,并且已经按照保证实施了定制的路由解决方案。

切换到MVC,这一切将变得非常简单。您是否研究过ASP.NET MVC的这一功能,或者正在开发项目的这一部分?+1@M.Babcock——当然,这是我们目前采用的路线(请原谅)。我正在调查MVC,但了解请求过程肯定会对我有所帮助。@JaredShaver这不是一项要求,不是。不过,从学术角度来看,我对此很好奇。我熟悉其他平台中的MVC堆栈,因此我怀疑它是否特别难以使用,但是我的同事和我都在PHP中使用了Laravel框架,并希望复制该功能,作为实践中的一种方便,并且在.NET.MVC中的学习体验是开源的,您可以在这里查看它:因为听起来您想重新实现它,所以您还可以查看实现的源代码。
// 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();