可以从不是文件系统的源处理ASP.NET ASPX页吗?
时间:2020-03-06 14:56:10 来源:igfitidea点击:
有没有一种方法可以执行完整的ASPX源文件,而页面源是来自字符串/数据库/资源,而不是文件系统上的文件?使用HTTP处理程序和模块来呈现动态内容/图像/等并写入响应是很直接的,但是似乎没有一种方法可以在文件系统上没有文件的情况下执行/编译ASPX源代码。例如:
- HttpContext.Current.Server.Execute()重载需要文件路径
- System.Web.Compilation.BuildManager只能从虚拟路径创建
目标是能够从Handler / Module / ViewEngine执行如下所示的字符串源,并且不需要文件系统上的文件(但可以从另一个位置获取源):
<%@ Page language="C#" MasterPageFile="~/Shared/Site.Master" Inherits="System.Web.UI.Page" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head id="Head1" runat="server"> <title>ListView Example</title> </head> <body> <form id="form1" runat="server"> <h3>ListView Example</h3> <asp:ListView ID="List" runat="server" DataSourceID="ProductDataSource"> <LayoutTemplate><ol><asp:PlaceHolder runat="server" ID="itemPlaceholder"></asp:PlaceHolder></ol></LayoutTemplate> <ItemTemplate><li><%# Eval("ProductName") %></li></ItemTemplate> </asp:ListView> <asp:AccessDataSource ID="ProductDataSource" runat="server"DataFile="~/App_Data/Northwind.mdb"SelectCommand="SELECT [ProductName], [QuantityPerUnit], [UnitPrice], [CategoryName] FROM [Alphabetical List of Products]"></asp:AccessDataSource> </form> </body> </html>
(注意:上面的示例只是一个简单的示例,但是显示了使用服务器控件,数据绑定语法,母版页以及页面指令中可能的用户控件声明等)。
我希望这是有道理的!
解决方案
更新:使用更适合这种情况的virtualpathprovider检查korchev的帖子。
可以将虚拟文件与占位符文字控件一起使用,并用实际源替换文字控件吗?
这些可能没有用,但发布了一些我发现的链接:
在HttpHandler中动态加载ASP.NET Page类
如何:动态加载页面进行处理
也许我们需要一个虚拟路径提供程序。它允许我们将ASPX和代码隐藏存储在不同的媒体RDBMS,xml文件等中。
我知道SharePoint Server曾经将ASPX页保留在数据库中,而不是保留在文件系统中。详细信息,但是,我不保留。