我确信这有一个简单的答案,但我找不到它。我需要创建一个不呈现任何内容的ASP.NET控件。这类似于ObjectDataSource
,它在aspx设计模式中显示为灰色框。到目前为止,我只创建了DO渲染的控件,我找不到在设计过程中会阻止渲染的属性,属性,覆盖等。有什么指针吗?
修改:只需简单地继承Control
即可呈现[ TypeName "ControlId" ]
。我希望它呈现为显示TypeName - ControlId
的灰色框。
答案 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>
设计时间结果:
运行时结果:
答案 1 :(得分:0)
您要查找的属性称为DesignMode