サイトをフレームワーク3.5から4.0にアップグレードしようとしています。すべてが細かいサーバー側であるように見えます。私の唯一の問題はこれまでのカスタムコントロールのIDです。ASP.Net 3.5クライアントIDが4.0と異なる
コントロール減速が次のようになります。
<div runat="server" id="gglSelectedItemsImage" class="gplSelectedItemsText">None selected</div>
3.5でレンダリングするとコントロールは次のようになります。
<div id="gplCategories_gglSelectedItemsImage" class="gplSelectedItemsText">Some Content</div>
など4.0に:
<div id="ctl00_ctl00_ctl00_ContentPlaceHolder1_Content_gplCategories_gglSelectedItemsImage" class="gplSelectedItemsText">Some Content</div>
これは、いくつかの原因となっています私たちの古いJavaScript/JQueryは失敗します。
web.configに<pages clientIDMode="AutoID" controlRenderingCompatibilityVersion="3.5" />
を設定しているため、99.9%のIDが正しいです。最も奇妙なことは3.5コントロールは、標準の3.5自動IDではなくclientIDMode="Predictable"
でレンダリングされているように見えますか?私がアクセスした場合、コントロールは4.0でサーバー側のCLIENTID
は、さらにそれが正しい表示されます:
Me.gglSelectedItemsImage.ClientID = "gplCategories_gglSelectedItemsImage"
これが主な問題である、電気ショック療法はJavaScriptに挿入された任意の値は、実際に間違った値です。
私たちのサイトは残念ながらこのエラーを修正するだけで大丈夫なので、コントロールがIDを別の方法でレンダリングしてサイト全体に実装する理由を理解する必要があります。
皆さん、ありがとうございます。
ご高齢のJavaScript/jQueryのは、とにかくハードコードされたクライアントIDに依存しているのはなぜ? – LukeH
私はLukeHに同意します。 ClientIDプロパティは存在するため、フレームワークのバージョンに関係なく、自分でハンドクラフトする必要はありません。 –
私の時間の前にあったので、私は知らない。この例では、別のコントロール( "gglSelectedItemsImage")のclientIDを除いたジェネリックコントロールがあり、その値を更新するためにJqueryを使用しています。実際にレンダリングされたドキュメントが "ctl00_ctl00_ctl00_ContentPlaceHolder1_Content_gplCategory_gglSelectedItemsImage" class = "gplSelectedItemsText"の場合、ClientIDが "gplCategories_gglSelectedItemsImage"であるとServerが原因で問題が発生しました。 – pingoo