代码之家  ›  专栏  ›  技术社区  ›  Dan Rosenstark

服务器端的问题包括

  •  4
  • Dan Rosenstark  · 技术社区  · 15 年前

    我非常想在我正在工作的项目中使用服务器端的includes,因为我只有一些重复的HTML,我需要在几个页面上得到它。 必须 我使用的是ascx或其他一些包含技术… 我的意思是,如果我使用服务器端include,会不会被雷击?

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

    它是ASP.NET 2.0。

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

    编辑: 如果你有什么建议的话,任何在一行上获得include的方法都可以。

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

    包含代码:

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

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

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

    然后你可以这样使用它

    <a:HeyFooter runat="server" />
    

    这是我所需要的。

    注释 include有两个安全问题:1)不要使用.inc扩展,因为它可以浏览。2)不包括基于用户变量的文件名,因为最好的答案是o ut。

    3 回复  |  直到 11 年前
        1
  •  4
  •   Aaron    15 年前

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

    我会用 Master Pages 在ASP.NET。这是获得页面公共区域的公认方法。

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

        2
  •  2
  •   Patrick Karcher    15 年前

    不,如果你想保持简单的话,你绝对不需要使用花哨的.NET Web表单来实现这一点。把它放在你想要插入的地方:

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

    HTML将显示在那里。我给了一个上下一个目录的路径。这是“最简单的”,但也有非常直截了当的优点。请注意,这不会显示在可视化设计器中。(我从来没有用过。)

        3
  •  1
  •   Steve Wortham    15 年前

    我仍然会偶尔使用include,以达到您所描述的目的。

    您不需要注册用户控件,因为它只是普通的HTML。你不需要一个母版页,因为它实际上只是一个HTML片段,需要放在一些选定的页面上。

    所以我从帮助文本文件的词汇表中得到如下内容:

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

    在我看来,使用老学校的include文件没有任何问题。

    推荐文章