这个有点……奇怪。基本上,我有一个使用 ASP.NET 动态数据构建的表单,它将利用几个自定义字段模板。
我刚刚在 FormView 中添加了另一个字段,它有自己的自定义模板,并且表单会无缘无故地加载该控件两次。更糟糕的是,第一次加载模板时,行还没有准备好,我收到错误消息:
Eval()、XPath() 和 Bind() 等数据绑定方法只能在数据绑定控件的上下文中使用
我正在访问 LinqDataSource OnSelected 事件中的 Row 变量以获取子对象...
现在是奇怪的部分:如果我稍微重新排序字段,导致问题的字段不再加载两次。
有什么想法吗?
编辑:我注意到 Page_Load 在第一次加载时被调用(如果你尝试使用它,当 Row 抛出异常时)但第二次没有被调用。如果这有帮助...
现在只通过捕获和忽略异常来管理它,但仍然有点担心如果我找不到真正的原因,事情会破裂。
编辑 2:我已经将问题追溯到递归使用 FindControl 来查找页面上的其他控件。显然 FindControl 可以导致页面生命周期事件(至少直到 page_load)触发......并且这发生在该页面“应该”加载之前,因此它的动态数据“东西”还没有准备好。