动态页面创建.aspx

时间:2009-12-18 16:40:41

标签: c# asp.net

我有一个IHttpModule动态地提供.aspx页面,这样我就可以将它们打包成DLL并将其放入现有的网站并提供我的页面。

我有一个派生自System.Web.UI.Page的MyPage类,它有一个.aspx,.aspx.cs和一个aspx.designer.cs文件。

当我尝试实例化类I.e. MyPage myNewPage = MyPage(),所有子控件都为null ...

然后我尝试在IHttpModule的BeginRequest事件中使用Server.Execute(myNewPage)呈现该页面输出。

我知道我可以编译页面并使用反射器来获取已构建的编译类,但是有更简洁的方法吗?

甚至更好地处理我正在做的事情?

谢谢, 鹅

3 个答案:

答案 0 :(得分:0)

我不认为这是可能的。您不能像任何其他对象一样实例化页面。您需要的“可能”是VirtualPathProvider。

答案 1 :(得分:0)

我不确定这是最好的解决方案,但您可以将所有aspx页面作为资产嵌入到您的dll中。根据请求从嵌入式资源中提取aspx并写入磁盘(如果尚未发生)。

可能有一种方法可以从嵌入式资源中提供aspx,而无需实际写入磁盘,但我不确定。

答案 2 :(得分:0)

aspx与ASP.NET运行时有一些密切的关系。我不认为实例化它只是调用构造函数是一个好主意。您可以做的是拥有一个空的(标准)aspx并将代码移动到用户控件 - ascx

可以使用LoadControl方法

动态加载的那些