思归,孟子等高手请进:自定义控件问题

time_is_life 2005-01-14 03:22:48
自定义一个控件,继承WebControl,重载了AddAttributesToRender方法,我调试跟踪了一下,为什么这个方法并没有被执行?

protected override void AddAttributesToRender(HtmlTextWriter writer)
{
// TODO: 添加 HoverLabel.AddAttributesToRender 实现
base.AddAttributesToRender (writer);

//添加onmouseover属性
string strAttribute = "this.style.textDecoration = 'underline';status='" + StatusBarText + "'";
writer.AddAttribute( "onmouseover" , strAttribute );

strAttribute = "this.style.textDecoration='none';status=''";
//关于AddAttribute的第三个参数
//如果此属性可能包含双引号或“&”符,则使用此版本的 AddAttribute 方法。如果知道将不会生成这些字符中的任何一个,或者如果知道此属性已经用 HTML 编码,则可以将 fEncode 参数设置为 false。
writer.AddAttribute( "onmouseout" , strAttribute ,false );
}


设置断点跟踪根本没有被执行
我用.net Reflector跟踪了一下,.net里面的Button控件里面的这个方法也是这么重载的
没有写什么特别的东西
问题到底出在哪里那?
请多多指教
...全文
114 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
time_is_life 2005-01-14
  • 打赏
  • 举报
回复
谢谢楼上的回答:
WebControl中:

protected override void Render(HtmlTextWriter writer)
{
this.RenderBeginTag(writer);
this.RenderContents(writer);
this.RenderEndTag(writer);
}

public virtual void RenderBeginTag(HtmlTextWriter writer)
{
this.AddAttributesToRender(writer);
HtmlTextWriterTag tag1 = this.TagKey;
if (tag1 != HtmlTextWriterTag.Unknown)
{
writer.RenderBeginTag(tag1);
}
else
{
writer.RenderBeginTag(this.TagName);
}
}

由此可以看出,是RenderBeginTag()调用AddAttributesToRender,我在我的控件的Render()中加了
RenderBeginTag(output)就搞定了

mooniscrazy 2005-01-14
  • 打赏
  • 举报
回复
你要override 另外一个方法,才会调用这个方法。好像是Render方法,你试一下几个Render开头的方法。我不记得了。override的时候不要去掉默认的实现语句。
zl_xue 2005-01-14
  • 打赏
  • 举报
回复
gz

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧