4

我非常想在我正在处理的项目中使用服务器端包含,因为我只有一些重复的 HTML,我需要在几个页面上获取它。我必须使用 ascx 或其他一些包含技术...我的意思是,如果我使用服务器端包含会雷击吗?

我的客户——中间人——说“做最简单的事情,无论如何这可能很快就会在 CMS 中重做。” 我不能使用服务器端包含吗?

它是 ASP.NET 2.0。

注意:我觉得以前有人问过这个问题,但我找不到。如果有请告诉我,我会亲自删除,谢谢!

编辑:如果您有建议,我可以通过任何方式在一条线上获得包含。

编辑:为什么我喜欢包含?

包括代码:

!--#include file="inc_footer.aspx"-->

控件的相同代码。首先你需要其中一个

<%@ Register TagPrefix="a" TagName="HeyFooter" Src="inc_footer.ascx" %>

然后你可以像这样使用它

<a:HeyFooter runat="server" />

这对我需要的东西来说有点长。

注意include 的两个安全问题:1) 不要使用 .inc 扩展名,因为它可以被浏览。2)不包括基于用户变量的文件名,作为最佳答案点。

4

3 回答 3

4

如果您通过字符串变量: 包含文件<!--#include file=some_variable -->,那么根据该变量的填充方式,黑客可能会进行攻击以包含他自己的文件并在您的计算机上运行任意代码。但只要你使用字符串文字,你就不会遇到这个问题。

我会在 ASP.NET 中使用母版页。这是拥有页面公共区域的公认方式。

您将像创建常规页面一样创建母版页,然后对其他每个页面的修改将是最小的。在每个页面文件的顶部添加一行,然后指定使用的部分。

于 2010-01-29T19:55:42.493 回答
2

不,如果您想保持简单,您绝对不需要使用花哨的 .NET Web 表单方式来执行此操作。只需将其放在您想要插入的位置:

<!--#include virtual="../repeatStuff/fun.html" -->

html 将显示在那里。我给了一个上下另一个目录的路径。这是“最简单的”,但也有非常直截了当的优点。请注意,这不会显示在您的视觉设计器中。(反正我从不使用它。)

于 2010-01-29T20:00:22.997 回答
1

我仍然会不时地使用 include 来完全达到您所描述的目的。

您实际上并不需要注册用户控件,因为它只是普通的 html。而且您不需要母版页,因为它实际上只是需要在几个选定页面上的 html 片段。

所以我从帮助文本文件的词汇表中得到了这样的包含:

<!--#include file="~/Glossary/BusinessDetails.inc"-->

在我看来,为此目的使用老式包含文件没有任何问题。

于 2010-01-29T20:02:49.347 回答