1

次のコードがあります。

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:  ****
4

3 に答える 3

1

2 つの異なることを混同している可能性があります。あなたは、「ストア」がページに存在することを確認できると述べています。これは、HTML マークアップに表示されることを意味すると思いますが、必ずしもサーバーで利用できるとは限りません。runat="server" を設定して、「store」要素に対してサーバー側のコントロールが生成されるようにしてください。

于 2012-06-21T18:57:42.060 に答える
0

Ext.NET を使用している場合、または使用していない場合でも、Ext.NET には Ext.NET.Utilities ライブラリが含まれています (Ext.NET には依存しません)。

Utilitiesライブラリには、ネイティブの Page.FindControl メソッドの制限を回避するための「 FindControlControlUtils 」ヘルパーが山積みになったクラスが含まれています。

この問題を回避するオプションがあるかもしれませんがControlUtils、最善の解決策/呼び出しが何であるかを 100% 伝えるには、より完全なサンプルを確認する必要があります。次のようなものがうまくいくかもしれません。

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

ControlUtils.FindControlByClientID(string)メソッドも役立つかもしれません。

https://github.com/extnet/Ext.NET.Utilities (MIT ライセンス)

とにかく、ネイティブの ASP.NET Page.FindControl() には制限がありますが、柔軟性の高い他のオプションがあり、ページでそれらのオプションを既に使用できます。

お役に立てれば。

于 2012-06-22T05:48:42.563 に答える
0

解決策を探している人のために、私はここでそれを見つけました:

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

于 2012-06-21T20:13:01.177 に答える