Asp.net 什么';微软的官方方法是什么来跟踪回发时要重建的动态控件的数量?

Asp.net 什么';微软的官方方法是什么来跟踪回发时要重建的动态控件的数量?,asp.net,controls,postback,viewstate,Asp.net,Controls,Postback,Viewstate,基于任意大小且不断变化的数据源创建动态控件时,官方的方法是什么来准确跟踪回发操作后(即ASP.NET页面事件生命周期中的服务器端)需要将多少控件重建到页面控件集合中具体来说,应该在哪个点重建动态控件?arity存储在哪里以供检索和重建使用 我所说的“官方”是指微软的做法。存在诸如会话存储等黑客攻击,但我想知道真正的方法,或者至少是微软推荐的方法。我找不到说明此信息的文档页。通常代码示例使用一组已知数字的动态控件。这就好像如果不这样做会更难 更新:我不是询问用户控件或声明性控件的静态表达式,而是询

基于任意大小且不断变化的数据源创建动态控件时,官方的方法是什么来准确跟踪回发操作后(即ASP.NET页面事件生命周期中的服务器端)需要将多少控件重建到页面控件集合中具体来说,应该在哪个点重建动态控件?arity存储在哪里以供检索和重建使用

我所说的“官方”是指微软的做法。存在诸如会话存储等黑客攻击,但我想知道真正的方法,或者至少是微软推荐的方法。我找不到说明此信息的文档页。通常代码示例使用一组已知数字的动态控件。这就好像如果不这样做会更难


更新:我不是询问用户控件或声明性控件的静态表达式,而是询问完全从代码隐藏动态注入控件,无论它们是我的、第三方还是内置的ASP.NET控件

这在很大程度上取决于手头的问题以及正在重新创建的控件的类型。它们都是简单的文本框或各种不同的复杂自定义用户控件。这里的主要内容是:如果希望动态控件在回发后恢复状态,则必须在页面生命周期的初始阶段重新创建它。

无论如何。基本上没有什么比微软的方式或微软推荐的方式更好的了。当您动态添加几个相同类型的简单控件时,一个带有计数的隐藏字段就可以了,但当您有几个复杂控件时,则必须使用其他方法。您仍然可以隐藏字段,并在其中保存控件的完整类型字符串(即System.Web.UI.WebControl.TextBox),然后重新实例化它们。但是想想一个更复杂的例子,在页面的不同部分放置不同的控件。。。并将它们初始化为特定状态。这会有点挑战性。因此没有微软的方式。。。建议的方法是在初始化阶段重新创建。就这样

所有问题都可以解决,但有时用户界面中出现了错误的方向,使用不同的方法可以更轻松地解决问题

补充说明
Asp.net使用的
ViewState
这种状态完整技术通常被认为是web开发人员的罪魁祸首。这就是为什么Asp.net MVC开发人员认为新的框架非常适合,因为它更适合无状态HTTP协议。我是他们中的一员D

你是说微软在高级网络控件(如中继器、数据列表、GridView等)中没有自己的标准方式在回发时重建控件状态?我认为这些控件非常复杂,有模板和嵌套控件。寻找Microsoft跟踪由Microsoft动态构建和管理的内容计数的方法。@John K:控制状态是一个完全不同的故事。这是一种开箱即用的工作方式,使静态页面控件能够恢复其以前的状态,从而可以跟踪更改事件并为控件提供重新填充数据的功能(例如在中继器中)。但正如我理解你的问题,你是在追求一种动态页面控件而不是静态页面控件的技术。Asp.net没有自动重新创建动态控件的内置功能,前提是这些控件具有视图状态中的状态。你必须自己处理它。我想我正试图在我自己的实现中更接近它,从而解决这个问题。我想另一种提问方式可能是:我是否可以使用与Microsoft在构建其附带控件时使用的相同机制?通常在.NET中,开发人员可以使用与Microsoft相同的机制-我认为ASP.NET的抽象层足够高,我们可以负担得起,但有时Microsoft使用了在我们的抽象级别上不可用的专门机制,尽管我们正在尝试类似的事情。自定义控件开发人员可以使用与Microsoft在其中使用的完全相同的机制,只要这些开发人员确切地知道Microsoft是如何做到的。:)。Net Reflector可能会有很多帮助。@John K:您最好使用
\uu DynamicState
ViewState
保存控件数据,而不是渲染内容。。。所以,如果数据存在,它将由repeater控件的项模板定义正确呈现。因此,您在repeater项目模板中定义的内容是不相关的。您的问题的措辞与您遇到的实际问题不符。动态不是你在这个问题上所想和提到的。如果在ASPX页面中定义了转发器,则无论您如何定义其项模板,它都是静态控件。它们都是静态的。动态控件是那些在代码中创建并添加到页面控件集合中的控件,在ASPX中根本不存在。即使是
OnItemDataBound
创建的控件通常也被视为静态的,因为它们与控件呈现相关。谢谢。你说得对。我把这两个词的混合词去掉,修改了这个问题。中继器和相关的都消失了,取而代之的是纯粹的动态意图。我的答案仍然是重新表述的问题。