是否可以从非文件系统的源处理ASP.NET ASPX页面?

时间:2008-09-30 17:32:45

标签: asp.net

有没有办法执行完整的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>

(注意:上面的示例只是一个简单的示例,但显示了使用服务器控件,数据绑定语法,母版页和页面指令中可能的用户控件声明等等。)

我希望这是有道理的!

3 个答案:

答案 0 :(得分:5)

也许您需要一个virtual path provider。它允许您将ASPX和代码隐藏存储在不同的媒体中 - RDBMS,xml文件等。

答案 1 :(得分:1)

更新:使用virtualpathprovider按korchev检查帖子,这更适合此方案。

您可以使用带有占位符文字控件的虚拟文件,并将文字控件替换为实际来源吗?

这些可能没用,但发布了我找到的几个链接:

Loading an ASP.NET Page Class dynamically in an HttpHandler

How To: Dynamically Load A Page For Processing

答案 2 :(得分:0)

我知道SharePoint Server用于将ASPX页面保留在数据库中而不是文件系统上。但是,细节我没有。

相关问题