【问题标题】:User control attributes at design-time设计时的用户控制属性
【发布时间】:2014-08-02 11:24:49
【问题描述】:
我正在 Visual Studio 2008 中测试一个简单的用户控件:一个名为 Wrapper 的面板,其中包含一些控件。 Visual Studio 可以在设计时处理这个问题吗?
public partial class TestControl : System.Web.UI.UserControl
{
[Description("Css class of the div around the control.")]
[CssClassProperty]
public string CssClass
{
get { return Wrapper.CssClass; }
set { Wrapper.CssClass = value; }
}
}
设置 CssClass 属性时,它不会在设计时更新 Panel 的 css。我是不是希望太大了?
【问题讨论】:
标签:
css
visual-studio-2008
user-controls
design-time
【解决方案1】:
我认为您必须检查父级并进行转换
if(this.Parent is Panel)
{
((Panel)this.Parent).CssClass = value;
}
或类似的。
【解决方案2】:
在 VS IDE 中设计页面可能是一件令人头疼的事情,因为当通过代码隐藏或整个网站继承的全局页眉(例如,通过PAGE 的子类化。)使用 VS IDE 来设计那些子页面/控件等变得非常困难。将 CSS 插入子文档或控件不是一种选择,因为编译后的页面通常会包含重复的对样式表的引用,并且很可能在声明之前提供第一个引用。
这是让 Visual Studio 在 IDE 中使用任意 CSS 的一种方法,可以克服此问题,因此您可以使用设计人员不知道服务页面中存在的 CSS 来设计控件。因此,您可以使用它在编辑器中的设计时使 CSS 可用,但在调试或运行时不可用。我很确定这也适用于您的场景。
插入:
<%
#If 0 Then
%>
<link rel='stylesheet' href='mycss.css' type='text/css' />
<%
#End If
%>
这只会在 IDE 的 html 设计器中加载您的样式表。