一般在什么时候需要对服务器控件进行扩展后再使用

wyumening 2013-10-03 09:32:53
看到一段这样的代码:
namespace Jiaen.Controls
{
public class ServiceLabel:Label
{

public override string Text
{
get
{
return SiteSetting.GetSiteSettings("jiaen").SiteBottomDec;
}
set
{
base.Text = value;
}
}
}
}


以上的代码对asp.net自带的服务器控件Label控件进行了扩展,重写了Text属性,我想知道在什么情况下要这么做?在开发过程中有时会因为性能问题不用服务器控件,以上的代码对服务器控件进行了扩展,并没有在性能上提高吧?还是有多余的viewstate产生吧?

那么在开发的时候如果要编写自定义控件一般来讲会怎么做?会直接继承继承WebControl类吗?能否给个例子参考下?
...全文
456 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
rjzou2006 2013-10-05
  • 打赏
  • 举报
回复
满不足不了你的时候,你自定义控件了。
threenewbee 2013-10-03
  • 打赏
  • 举报
回复
引用 7 楼 wyumening 的回复:
[quote=引用 6 楼 caozhy 的回复:] [quote=引用 5 楼 wyumening 的回复:] [quote=引用 3 楼 caozhy 的回复:] 如果你希望重用和扩展的时候,你使用继承是再好不过的。因为你把复杂性隐藏到控件的内部,而对调用者来说保持了简单。
我在问题描述中给出的代码是我偶然间在网上看到的,我想问的是在有必要编写自定义控件时一般来讲哪种做法更常见,是继承自带的服务器控件并进行扩展同时从性能的角度出发禁用viewstate,还是说只继承最基本的基类,自己重写大部分功能,判断的基准是什么?[/quote] 如果你要用100个控件,每个都需要相同的配置或者扩展下,你觉得继承一个方便还是直接写代码去操作它方便。[/quote] 那如果继承了asp.net自带的服务器控件,并进行了扩展,如何避免使用服务器控件可能带来的性能问题?能否给点资料参考下?[/quote] 如果你觉得“性能问题”是个问题,就干脆别用。
wyumening 2013-10-03
  • 打赏
  • 举报
回复
引用 6 楼 caozhy 的回复:
[quote=引用 5 楼 wyumening 的回复:] [quote=引用 3 楼 caozhy 的回复:] 如果你希望重用和扩展的时候,你使用继承是再好不过的。因为你把复杂性隐藏到控件的内部,而对调用者来说保持了简单。
我在问题描述中给出的代码是我偶然间在网上看到的,我想问的是在有必要编写自定义控件时一般来讲哪种做法更常见,是继承自带的服务器控件并进行扩展同时从性能的角度出发禁用viewstate,还是说只继承最基本的基类,自己重写大部分功能,判断的基准是什么?[/quote] 如果你要用100个控件,每个都需要相同的配置或者扩展下,你觉得继承一个方便还是直接写代码去操作它方便。[/quote] 那如果继承了asp.net自带的服务器控件,并进行了扩展,如何避免使用服务器控件可能带来的性能问题?能否给点资料参考下?
threenewbee 2013-10-03
  • 打赏
  • 举报
回复
引用 5 楼 wyumening 的回复:
[quote=引用 3 楼 caozhy 的回复:] 如果你希望重用和扩展的时候,你使用继承是再好不过的。因为你把复杂性隐藏到控件的内部,而对调用者来说保持了简单。
我在问题描述中给出的代码是我偶然间在网上看到的,我想问的是在有必要编写自定义控件时一般来讲哪种做法更常见,是继承自带的服务器控件并进行扩展同时从性能的角度出发禁用viewstate,还是说只继承最基本的基类,自己重写大部分功能,判断的基准是什么?[/quote] 如果你要用100个控件,每个都需要相同的配置或者扩展下,你觉得继承一个方便还是直接写代码去操作它方便。
wyumening 2013-10-03
  • 打赏
  • 举报
回复
引用 3 楼 caozhy 的回复:
如果你希望重用和扩展的时候,你使用继承是再好不过的。因为你把复杂性隐藏到控件的内部,而对调用者来说保持了简单。
我在问题描述中给出的代码是我偶然间在网上看到的,我想问的是在有必要编写自定义控件时一般来讲哪种做法更常见,是继承自带的服务器控件并进行扩展同时从性能的角度出发禁用viewstate,还是说只继承最基本的基类,自己重写大部分功能,判断的基准是什么?
种草德鲁伊 2013-10-03
  • 打赏
  • 举报
回复
原有的控件没办法满足需求了,自然就要自定义了。
threenewbee 2013-10-03
  • 打赏
  • 举报
回复
如果你希望重用和扩展的时候,你使用继承是再好不过的。因为你把复杂性隐藏到控件的内部,而对调用者来说保持了简单。
  • 打赏
  • 举报
回复
如果你想说它“比Label控件性能低”,建议你给出测试数据,说明使用一个ServiceLabel控件对于你的应用程序到底比改为使用一个Label控件降低了整个页面多少速度(因为毕竟没有人能够用眼睛看出来,因此难以夸张)。对于View也是一样,你可以给出数据说明使用ServiceLabel比Label,你的ViewState大了多少,会给客户端页面加载的用户体验带来0.00几秒的性能损失。 关于“一般”,不是随便说的。因为现在的asp.net程序员懂得这方面知识的不足20%,因此给出“一般”的意义不大。对于我来说,就算是使用UserControl来实现,或者就算你(不是从WebControl而是)从Control继承,我也不太指责一个asp.net程序员。因为能进行这种方面的开发,已经算是很难得了。
licai1210 2013-10-03
  • 打赏
  • 举报
回复
1、在有控件的功能无法很好的满足你的开发需求,但是如果自定义一个控件能够减少你的工作量,同时后期维护方便,在一定程度能复用的情况下可以开发这么一个服务器控件。 2、性能没提高。 3、ViewState你可以禁止

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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