C# 可重用组件

C# 可重用组件,c#,oop,asp.net,C#,Oop,Asp.net,我不是初学者,但我越是思考这个问题,就越是为找不到一个优雅的解决方案而烦恼 在写一个C#.NET网站时,我意识到我需要在不同的页面中使用几个组件,这些组件的功能大致相同,我想找到一种方法,将它们编写一次,然后重用 例如,我在几个页面中使用的搜索框或几个GridView。 这个“组件”由几个ASPX控件、方法、可能还有一些JavaScript等组成。。 它们太复杂,无法复制,也太具体,无法创建为控件 您认为编写重用这些元素的应用程序的最佳方法是什么。 这些是我迄今为止找到的解决方案,每个都有各自的

我不是初学者,但我越是思考这个问题,就越是为找不到一个优雅的解决方案而烦恼

在写一个C#.NET网站时,我意识到我需要在不同的页面中使用几个组件,这些组件的功能大致相同,我想找到一种方法,将它们编写一次,然后重用

例如,我在几个页面中使用的搜索框或几个GridView。 这个“组件”由几个ASPX控件、方法、可能还有一些JavaScript等组成。。 它们太复杂,无法复制,也太具体,无法创建为控件

您认为编写重用这些元素的应用程序的最佳方法是什么。 这些是我迄今为止找到的解决方案,每个都有各自的缺点:

  • 事实上,iframe的所有问题对我来说都很好(对于搜索框)。我写了一个包含所有搜索行为的aspx/cs页面(非常复杂),然后在每个页面上我想要这个搜索框,我添加了一个iframe

  • 母版页-我发现这一页相当棘手。我发现你可以写一个嵌套的母版页,但我不知道这对我有什么帮助。母版页方法-将子页设置为第一页(调用其父母版)。但在我的例子中,我有一个主页,其中有他的子组件

  • 3.UpdatePanel—我可以使用UpdatePanel—并编写一个共享函数,用所需的组件和代码填充它。好的,这可能行得通,但是代码很难维护(您需要使用C#手动编写所有组件)


    有什么想法吗?我错过了任何琐碎的解决方案

    IFrame不是任何组件组合和重用问题的解决方案

    母版页是一种与你的问题无关的更高层次的写作工具

    同样,UpdatePanel不是可重用的解决方案


    撰写一篇文章或煮一壶咖啡,然后学习写一篇文章。

    我认为最好的方法是这样做,因为在构建用户控件的组件中有多个控件


    关于complixty,这没关系,因为您构建此控件所花费的时间将节省大量时间在每个页面中写入它。通常,用户控件按照您所描述的方式进行操作,它们有自己的
    .ascx
    标记文件和关联的
    .cs
    代码隐藏文件


    当然,您可以公开UserControl上的属性,您可以从其父控件声明性地设置这些属性,父控件可以是另一个UserControl,也可以是ASP.NET页面本身。

    正如我最初评论的那样,使用ascx(用户控件)或者如果您想widgetize页面,您可以坚持使用aspx并使用UFrame(jQuery)插件。

    @Ranch,你问了7个问题,只接受了1个。花0.2秒的时间,承认人们为回答你的问题所付出的努力,这是恰当的礼仪。否则你会发现自己被忽视了。只是说…@Sky Sanders,谢谢你的评论。我将回顾我的问题——补充我过去的经验。至于ascx,您认为对于只使用一次的组件,这是一个合适的解决方案吗?我正在写的页面已经变得非常庞大,我想把它分成几个部分——只是为了便于将来的维护和代码可读性。@epitka,伙计,这不是“第一次!”事实上,这更像是一个提醒,使用恰当的术语可能更有帮助。ascx是一个任意文件扩展名,我们大多数人都知道它表示用户控件,但从本文的上下文中可以明显看出,使用标准术语是合适的。@Ranch,UserControls在这两方面都可以很好地为您服务。对于重用,您当然只需要维护一个控件以供多次使用。为了实现良好的OOP(不管怎样,在Web表单中都可以做到最好),它鼓励对关注点进行封装和分离,并且作为一个令人愉快的副作用,您可以在UI中获得更少混乱的代码。如果只使用一次,那么封装复杂逻辑听起来是个好主意。