.findControl()null指针异常和崩溃的ASPX服务器

时间:2012-06-21 18:54:36

标签: c# asp.net ext.net

我有以下代码:

private Ext.Net.Store getStore(string name)
{
    return (Ext.Net.Store)DUOSPage.FindControl(name);
}

getStore("store").DataSource = someList;

我可以验证“store”对象和“someList”实际上都存在于页面中。在我看来,无法找到FindControl。但是,我正在接受

someList = Count = Cannot evaluate expression because a thread is stopped at a point where garbage collection is impossible, possibly because the code is optimized.

以及本地服务器崩溃。对我而言,这意味着该元素可能位于页面中并被发现,但它会以某种方式导致服务器畏缩和崩溃。

关于这里有什么问题的任何想法?为什么会崩溃ASPX服务器?

编辑:

错误提示给了我:

Description:
Stopped working

Problem signature:
Problem Event Name: CLR20r3
Problem Signature 01:   webdev.webserver20.exe
Problem Signature 02:   10.0.0.0
Problem Signature 03:   4ba204ca
Problem Signature 04:   ****
Problem Signature 05:   1.0.0.0
Problem Signature 06:   4fe36c1c
Problem Signature 07:   3ce
Problem Signature 08:   c
Problem Signature 09:   System.NullReferenceException
OS Version: 6.1.7601.2.1.0.256.4
Locale ID:  ****

3 个答案:

答案 0 :(得分:1)

你可能会混淆两件不同的事情。您提到您可以验证页面中存在“store”,我认为这意味着您在HTML标记中看到它,但这并不一定意味着它可供服务器使用。确保设置runat =“server”以确保为“store”元素生成服务器端控件。

答案 1 :(得分:0)

对于任何寻找解决方案的人,我都在这里找到了:

http://winmike.blogspot.com/2011/02/aspnet-findcontrol-returns-null-for.html

答案 2 :(得分:0)

如果您正在使用Ext.NET,或者即使您不使用Ext.NET,Ext.NET也包含Ext.NET.Utilities库(不依赖于Ext.NET)。

实用程序库包含ControlUtils类,其中包含一大堆“ FindControl ”帮助程序,以解决本机Page.FindControl方法的变通限制。

ControlUtils中可能有一个选项可以避免此问题,但我需要查看更完整的示例,以便100%说出最佳解决方案/调用的内容。像下面这样的东西可能会起作用。

示例

return Ext.Net.Utilities.ControlUtils.FindControl<Store>(this, name);

ControlUtils.FindControlByClientID(string)方法也可能有用。

https://github.com/extnet/Ext.NET.Utilities(麻省理工学院获得许可)

无论如何,原生ASP.NET Page.FindControl()是有限制的,尽管还有其他选项具有更大的灵活性,并且您已经在页面上提供了这些选项。

希望这有帮助。