微软的官方方式是什么跟踪要在Postback上重建的动态控件的数量?

时间:2010-12-21 06:31:10

标签: asp.net controls postback viewstate

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

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

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

1 个答案:

答案 0 :(得分:1)

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

反正。基本上没有像 Microsoft方式 Microsoft推荐方式这样的东西。当您动态添加几个相同类型的简单控件时,带有计数的隐藏字段可以解决问题,但是当您有多个复杂控件时,必须使用其他方法。您仍然可以隐藏字段并将控件的完整类型字符串保存在其中(即System.Web.UI.WebControls.TextBox)并重新实例化它们。但想想一个更复杂的例子,即在页面的不同部分放置各种控件......并将它们初始化为特定的状态。那会更具挑战性。因此没有Microsoft方式......推荐的方法是在Init阶段重新创建。就是这样。

一切都可以解决,但有时候在UI中采取了错误的方向,使用不同的方法可以更轻松地完成任务。

补充说明

Asp.net使用的这种状态完整的ViewState技术被认为是Web开发人员最糟糕的罪魁祸首。这就是为什么Asp.net MVC开发人员认为新框架很幸福,因为它更适合无状态HTTP协议。我就是其中之一。 :d