可以从不是文件系统的源处理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页保留在数据库中,而不是保留在文件系统中。详细信息,但是,我不保留。