我有一堆ASP.NET网页(有标准布局),它们是产品文档。我想创建某种组合页面,将所有其他页面内容拉入并将它们连接成一个长页面。如何连接ASP.NET中的网页
IFrames将无法工作,因为我不知道每个页面的大小。我可以让组合页面执行大量的#includes,并且这将起作用,但我不想让主更新保持最新状态(我们有一个可随时间变化的页面名称数据库)。
最终,我追求的东西可以得到一个页面列表,并为每个人做相当于该页面的#include到当前页面。
我希望这是有道理的。有什么想法吗?
我有一堆ASP.NET网页(有标准布局),它们是产品文档。我想创建某种组合页面,将所有其他页面内容拉入并将它们连接成一个长页面。如何连接ASP.NET中的网页
IFrames将无法工作,因为我不知道每个页面的大小。我可以让组合页面执行大量的#includes,并且这将起作用,但我不想让主更新保持最新状态(我们有一个可随时间变化的页面名称数据库)。
最终,我追求的东西可以得到一个页面列表,并为每个人做相当于该页面的#include到当前页面。
我希望这是有道理的。有什么想法吗?
是你的“文档页面”静态的HTML或的.aspx也...
如果它只是静态的内容,你可以做以下
//assume that the array of page names has come from the DB.
protected void Page_Load(object sender, EventArgs e)
{
string[] pages = new string [] { "~/Default.html",
"~/Default2.html", "~/Default3.html", "~/Default4.html" };
foreach (string p in pages)
{
Response.WriteFile(p);
}
}
你的网页是什么样子的?
我认为这只是纯HTML,并且在所有页面中都有一致的模式,不是吗?就像,它有适当的HTML标记以及HEAD和BODY等?
在这种情况下,您可以像阅读普通文本文件一样阅读它,并对其进行一些字符串解析以提取BODY标签内的部分,然后您可以将它们连接起来并将它们打印出来,然后将它们打印出来。 。
获得实际的路径名到ASP.NET网站上的一个文件,你可以使用Server.MapPath
var actualDiskFilename = Server.MapPath("~/somewhere/somepage.html");
所有System.IO
类工作一样在ASP.NET中获取文件的列表一个虚拟目录,你可以这样做:
var virtualDir = "~/somefolder/";
var actualDir = Server.MapPath(virtualDir);
var files = Directory.GetFiles(actualDir);
这是你在找什么?
如果页面ASPX的文档,你可以使用Server.Execute
来执行页面并返回生成的html。然后,您可以解析html并删除头部和身体标记,并将剩余的html连接到您的页面中。
你说IFRAMES不起作用,因为你不知道尺寸?那么为什么不根据尺寸更新IFRAMES的尺寸。
创建一个默认的大小IFRAME并加载页面,然后借助javascript更新大小。你应该看看一些JavaScript框架,如原型或jquery
对我来说听起来像你应该从头开始重新考虑格式,如果可能的话。例如,如果您将内容存储在数据库或XML文件中,那么您的各个页面可以提供他们的部分,并且您的集团页面可以提供您想要的总数的任意组合。
如果您只说几页(少于十几页),那么转换就不那么难。然后保持文档是最新的是编辑内容,而不是显示文件(不可否认,在这方面XML比数据库更容易)。
页面是纯HTML吗? – 2008-10-25 18:01:24