2012-04-09 12 views
1

最近、someControl.Attributes.Add( "customAttr"、 "customVal")を使用すると、すべてのWebブラウザで互換性がないことが判明しました。カスタム属性の推奨登録は次のとおりです。RegisterExpandoAttribute - Throwing Error

Page.ClientScript.RegisterExpandoAttribute(someControl.ClientID, "customAttr", "customVal") 

これは問題です。私はカスタムコントロールを生成するためにListViewを使用しています。特定のシナリオでは、ListViewをリフレッシュまたは再作成する必要があります。これが発生し、ListView項目がexpando属性の登録(この場合は再登録)を試みると、ページに次のエラーがスローされます。

同じキーを持つエントリが既に存在します。

明らかにRegisterExpandoAttribute()はPage.Cacheオブジェクトのように動作しません。キーがすでに存在する場合は、現在の値が上書きされます。私は簡単にこの問題を克服することができますが、これにはより洗練されたソリューションがあるのだろうかと思います。例えば、次のようなメソッドはありません。Page.ClientScript.IsExpandoAttributeRegistered(...)

アイデアはありますか?

答えて

1

カスタムコントロールを作成する場合は、コントロールPreRenderの中でRegisterExpandoAttributeコールを試行してください。コントロールが削除され、その問題が修正された場合、まだ登録されている属性に関する問題が発生していました。私はあなたがをPreRenderでコントロールのために呼んでいるならば、1ページに2回以上呼び出されてはならないと思います。

関連する問題