在设计期间不呈现的控件

时间:2011-01-05 17:00:25

标签: asp.net controls

我确信这有一个简单的答案,但我找不到它。我需要创建一个不呈现任何内容的ASP.NET控件。这类似于ObjectDataSource,它在aspx设计模式中显示为灰色框。到目前为止,我只创建了DO渲染的控件,我找不到在设计过程中会阻止渲染的属性,属性,覆盖等。有什么指针吗?

修改:只需简单地继承Control即可呈现[ TypeName "ControlId" ]。我希望它呈现为显示TypeName - ControlId的灰色框。

2 个答案:

答案 0 :(得分:2)

好吧,我玩过它并且你是对的,这不是微不足道的。

当设计器中显示用户控制代码时,VS没有实际执行.ascx用户控制代码,它只解析标记,因此您无法有条件地更改控件。

但是,使用真正的ASP.NET服务器控件时,该限制无效。只需在您的.cs文件的解决方案中添加一个新项目,覆盖RenderContents

    protected override void RenderContents(HtmlTextWriter output)
    {
        if (DesignMode)
            output.Write("<table style='border-color:Black;background-color:Gray'><tr><td width=300px height=100px style='vertical-align:middle;text-align:center'>I'm your design time box.</td></tr></table>");
        else
            output.Write("Runtime text lalala");
    }

然后在.aspx文件中,添加控件:

<body>
    <form id="form1" runat="server">
    <div>
        <cc1:ServerControl1 ID="ServerControl1" runat="server" />
    </div>
    </form>
</body>

设计时间结果:

alt text

运行时结果:

alt text

答案 1 :(得分:0)

您要查找的属性称为DesignMode