如何在 asp.net 页面中包含外部 html 文件
Posted
技术标签:
【中文标题】如何在 asp.net 页面中包含外部 html 文件【英文标题】:How to include an external html file in asp.net page 【发布时间】:2011-10-19 18:20:42 【问题描述】:如何在asp.net
网页中包含external html file
。在php中我们可以使用include
函数,如果asp.net有类似的函数,请告诉我。我的意图是,我有一个通用的头 html 文件,所以我需要将该文件包含在所有 aspx
页面中。
【问题讨论】:
“外部”是指来自不同域/网站的 HTML 文件? 【参考方案1】:服务器端包含可跨不同平台使用,对于包含静态内容很有用。您可以在 IIS 中使用它们,但我需要在 IIS7 中启用它们。
<!-- #include file="Static/Menu.html" -->
在 IIS7 中启用 SSI 的说明可在 http://tech.mikeal.com/ 获得
对于动态内容,有一个称为 MasterPages 的内置模板方法,应该使用它来代替。
【讨论】:
感谢您实际提供问题的答案而不是回答:您不应该这样做,而是这样做。【参考方案2】:我假设这是网络表单?
在 asp.net 中执行此操作的最典型方法是使用 Master Page。在母版页中包含您的标题,并让内容页继承自此。
【讨论】:
【参考方案3】:ASP.NET 是与 PHP 不同的框架,因此您最好不要尝试复制您可能在 PHP 中所做的事情的方式。我们在 ASP.NET 中使用母版页,而不是对常见元素(例如标题)使用“包含”文件。请参阅http://www.asp.net/master-pages/tutorials 或MSDN on Master Pages。母版页(与任何其他 .aspx 页面一样)中的内容可以是静态 HTML 或从控件动态生成的标记。
拥有可重复使用的内容块的另一种方法是创建称为User Controls 的内容。这些基本上是可以像其他服务器控件一样重用的页面片段。例如,您可以创建一个菜单用户控件,然后将其嵌入到一个通用母版页中。这是将您的网站分解为可管理的“块”的好方法。
有关更多信息,请参阅 SO 其他地方的问题 ASP.NET equivalent of server side includes。
【讨论】:
【参考方案4】:除了使用MasterPage和UserControl之外,提供here的一种方式是使用Response.writeFile
,但是这个解决方案的根本问题是:
ASP 不会处理文件中的服务器端脚本。这是因为所有 ASP 代码在包含文件时都已经运行,服务器不会再返回读取任何内容以进行服务器端处理
【讨论】:
有没有人可以解决上述问题,而不是 MasterPage 和 userControl?【参考方案5】:您可以通过 IFrame 包含它 从 .Net 4.5 开始,您可以选择通过以下方式包含内容
有关 IFrame 的更多信息: http://www.w3.org/html/wg/drafts/html/master/semantics.html#the-iframe-element
【讨论】:
以上是关于如何在 asp.net 页面中包含外部 html 文件的主要内容,如果未能解决你的问题,请参考以下文章