【发布时间】:2011-01-11 00:10:53
【问题描述】:
我非常想在我正在处理的项目中使用服务器端包含,因为我只有一些重复的 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)不要包含基于用户变量的文件名,作为最佳答案。
【问题讨论】:
-
您为什么如此热衷于避免用户控制?对我来说似乎没有任何额外的努力。
-
@Nick Higgs,有没有办法将所有代码放在一行上?我不想输入两行代码——其中一个定义标签,另一个使用它——来获得一个简单的包含。我知道这很可悲,但我真的只需要包含一些 HTML。另外,你知道,“尽可能简单”之类的。无论如何,请输入最短的代码来执行 ASCX,并将其与答案中的包含进行比较。也许我不知道可以省略什么......
-
@yar:在我看来,“尽可能简单”是指不要使用服务器端包含,默认关闭,会导致安全问题,并且没有人再使用了。
-
@John Saunders,它们是被弃用还是只是“未使用”?它们会导致什么安全问题。这正是我要问的。
-
@yar:服务器端包含的内容远不止插入一大段 html。如果您启用 SSI,您的网站就会面临许多问题,其中大部分已被遗忘。关于 SSI,我只记得不要使用它们的警告。另请注意,默认情况下它们是关闭的 - 这是有原因的。
标签: asp.net server-side server-side-includes