在多个页面中重用ASP.NET代码

时间:2013-12-20 13:40:43

标签: asp.net .net visual-studio reusability

有没有办法在许多不同的页面中重用一段ASP.NET代码(基于标记的代码,而不是代码隐藏)?例如,我有一个<div>,其中包含一些内容,显示在我网站的5个不同页面中。我正在寻找一种技术,通过该技术,我可以将此<div>保存在单独的网络内容文件中,可以说,可能会有一个不同的扩展程序,如MyDiv.ASPC,然后可以在网页中的任何位置执行服务器端标记,如:

<asp:Import href="~/MyDiv.aspc" />

并且ASP.NET会在此标记出现的位置注入此文件的全部内容。

我想为此创建一个用户控件,但我不确定用户控件是否总是精确地注入其正文中写入的内容,或者有时候用户控件本身会生成不需要的标记。

还是有更好的方法吗?

修改

关于母版页,它们远离我正在寻找的东西。它们实际上适用于您网站的常见基本布局。我的想法与此完全相反。我的页面没有共同的布局;只是他们有一个共同的<div>。 UserControl可以更加贴近它。

对于UCs来说,我担心的是他们产生的东西比他们体内的东西更多,而我所追求的只是简单的文字注入。从技术上讲,如果你明白我的意思,我正在寻找的基本上是一个预处理器步骤(在C ++中是一种#include的东西)而不是编译器步骤。

3 个答案:

答案 0 :(得分:1)

您需要使用ASP.NET用户控件,因为这些是专门为您描述的问题解决的。有关详细信息,请参阅MS Documentation

从他们的文件......

  

除了在ASP.NET网页中使用Web服务器控件之外,   您可以使用相同的方法创建自己的自定义,可重复使用的控件   用于创建ASP.NET网页的技术。这些控件是   称为用户控件。

     

用户控件是一种复合控件,其工作方式非常类似   ASP.NET网页 - 您可以添加现有的Web服务器控件和标记   到用户控件,并定义控件的属性和方法。   然后,您可以将它们嵌入到ASP.NET网页中,在那里它们充当   单元。

答案 1 :(得分:1)

空的userControl会做到这一点 - 没有。用户Control只是将其内容添加到页面或托管它的usercontrol。它没有增加任何额外的东西。

UserControls为您提供了一种很好的简单页面片段类型方法来重用内容。他们在一个项目中工作得很好。大多数人都将它们用于此。

如果您想在项目中创建更多可重用的东西,可以编写服务器控件。它涉及更多,但更可重用。谷歌应该能够找到很多关于如何做到这一点的教程。

答案 2 :(得分:0)

进行短暂的测试。只要您没有在其中放置任何Runat =“Server”标签,用户控件就不会输入额外的标签,所以这确实是我猜的解决方案。

您还可以从缓存对象中读取输出文件的输出。

所以

<%= Static.ContentXyz %>

意味着:

public static class Static
{
    public static string ContentXyz
    {
        get
        {
            string s;

            if (!this.cacheDictionary.TryGetValue("ContentXyz", out s))
            {
                s = File.ReadAllText(Server.MapPath("ContentXyz.html"));
                this.cacheDictionary("ContentXyz", s);
            }

            return s;
        }
    }
}