1

这个有点……奇怪。基本上,我有一个使用 ASP.NET 动态数据构建的表单,它将利用几个自定义字段模板。

我刚刚在 FormView 中添加了另一个字段,它有自己的自定义模板,并且表单会无缘无故地加载该控件两次。更糟糕的是,第一次加载模板时,行还没有准备好,我收到错误消息:

Eval()、XPath() 和 Bind() 等数据绑定方法只能在数据绑定控件的上下文中使用

我正在访问 LinqDataSource OnSelected 事件中的 Row 变量以获取子对象...

现在是奇怪的部分:如果我稍微重新排序字段,导致问题的字段不再加载两次。

有什么想法吗?

编辑:我注意到 Page_Load 在第一次加载时被调用(如果你尝试使用它,当 Row 抛出异常时)但第二次没有被调用。如果这有帮助...

现在只通过捕获和忽略异常来管理它,但仍然有点担心如果我找不到真正的原因,事情会破裂。

编辑 2:我已经将问题追溯到递归使用 FindControl 来查找页面上的其他控件。显然 FindControl 可以导致页面生命周期事件(至少直到 page_load)触发......并且这发生在该页面“应该”加载之前,因此它的动态数据“东西”还没有准备好。

4

2 回答 2

0

你指的不是 in Page_Loadthat set in的东西OnSelected,是吗?像你的行对象。OnSelected是一个回发事件,发生在Page_Load. 当行未准备好时,这是我能想到的唯一可能导致您的异常的事情。

于 2009-06-17T16:46:44.343 回答
0

开始在后面的代码中注释掉所有内容,直到所有内容都被注释或您的控件不再加载两次。

如果它仍在执行此操作,请开始解开控件本身中的内容。最终,您将解决实际问题。

于 2009-06-18T19:17:59.670 回答