从代码隐藏更改ASCX的边框属性?

时间:2010-02-25 20:33:35

标签: asp.net user-controls border code-behind

我正在构建一个asp.net用户控件库,我从一个自定义的UserControlBase类派生,该类进一步派生自实际的UserControl类。层次结构如下所示:

ASCX - > UserControlBase:UserControl

我有这个要求在所有ASCX周围设置边框。所以,我想如果我可以修改UserControlBase它将适用于所有ASCX。我尝试在UserCOntrolBase的Page_Load中使用代码,但它无法正常工作

this.Attributes.Add(“style”,“border-color:#FFFF66; border-width:4px; border-style:Dashed;”);

我该怎么做才能让它发挥作用?请指教。

由于 AJ

1 个答案:

答案 0 :(得分:2)

用户控件除了放入内容之外没有任何与之关联的标记。因此,没有标签可以添加您的样式属性。所以你必须自己添加一个包装标签。

一种解决方案是覆盖UserControlBase的Render方法,如下所示:

protected override void Render(HtmlTextWriter writer)
{
    writer.Write("<div style='border-color:#FFFF66;border-width:4px;border-style:Dashed'>");
    base.Render(writer);
    writer.Write("</div>");
}

这会将您的用户控件包装在div标记中,该标记包含您尝试添加的样式属性。