服务器端包含问题

时间:2010-01-29 19:54:39

标签: asp.net server-side server-side-includes

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

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

这是ASP.NET 2.0。

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

编辑:如果您有任何建议,任何获得包含ON ON LINE的方式对我都没问题。

修改:为什么我喜欢包含?

包含代码:

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

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

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

然后你可以像这样使用它

<a:HeyFooter runat="server" />

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

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

3 个答案:

答案 0 :(得分:4)

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

我会在ASP.NET中使用Master Pages。这是获得页面公共区域的可接受方式。

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

答案 1 :(得分:2)

不,如果你想保持简单,你肯定不需要使用花哨的.NET网络表单来做到这一点。只需将它放在您想要插入的位置:

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

html将显示在那里。我在另一个目录上上下了一个路径。这是“最简单的”,但也具有非常直接的优点。请注意,这不会出现在您的可视化设计器中。 (无论如何我从不使用它。)

答案 2 :(得分:1)

我仍然每隔一段时间使用一次,以达到您描述的目的。

你真的不需要注册一个用户控件,因为它只是简单的html。而且你不需要一个母版页,因为它只是一个需要在几个选择页面上的html片段。

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

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

在我看来,为此目的使用旧学校包含文件并没有错。