ステージ/テスト環境でうまく動作するWebアプリケーションがありますが、私たちがプロダクション環境に移動すると変なことが起こります。すべてのコントロールIDが変更されます。たとえば、ラベルはctl00_cphMainContent_lblPetName
から_ctl0_cphMainContent_lblPetName
になりました。なぜこれが起こるのだろうか?このようなことが起こる原因は何か。私が知っている唯一の2つの違いは、プロダクション環境にHTTPSがあり、デバッグを無効にしていることです。コントロールIDのレンダリング環境が異なる
答えて
あなたのweb.configは異なります。クライアントID生成の動作は、EnableLegacyRenderingによって異なります。 web.configのxhtmlConformance要素を確認してください。レガシーなら "_ctl"、そうでなければ "ctl"を得ます。
ありがとう、これはまさに問題の原因でした。ルートweb.configにはこれがレガシーに設定されていましたが、これはサブフォルダにあるアプリケーションによって継承されました。 –
クライアントIDの生成方法は、異なるバージョンのフレームワーク間で変更される可能性があるため、特定のパターンに頼るべきではありません。
ClientID
とUniqueID
のプロパティを使用して、HTMLコードに対して生成されるIDと名前を判別する必要があります。
プロパティClientID
には、生成されたIDが含まれています。たとえば、JavaScriptのdocument.getElementById
メソッドで使用できます。
UniqueID
プロパティには生成された名前が含まれています。たとえば、Request.Form
コレクションのフォームで値を読み取った場合に使用できます。
この変更は1.1から2.0の間であり、おそらく4.0になります。私は環境がそんなに違っているとは思わない... –
2.0以降、フレームワークのすべてのバージョンが増分であるため、この特定の動作が4.0で変更されるとは思わない。 –
このトリックは、コントロールIDを知っているサーバーにクライアント側のJavaScriptを送信することです。
var btn1 = document.getElementById(" <%= button1.ClientID %>");
、実際には、実行時に、あなたはJavaScriptのすべてを書いているように私はいつも、これを嫌ってきた:
これを行うための通常の方法は、このようなものです。代わりに、私が好きなのは、ページ(またはコントロール)が必要とするすべてのコントロールID(または他のサーバー側の値)を含むクラスを生成することです。
私は例を掲載したいと思いますが、これはしばらくはやっていませんし、私にはありません。基本的に、必要なすべてのコントロールIDのメンバーを含むJavaScriptクラスを作成し、それをページに登録します。 ;
VAR BTN1 =のdocument.getElementById(myPage_Instance.btn1):
myPage_Instance.btn1 = <%= button1.ClientID %>; // Better - do it in the codebehind
// more of the same
あなたのコードが今することができ:そして、このような何かを起動スクリプトを登録
- 1. CSSと異なる環境
- 2. 異なる環境のsecurity.ymlファイルが異なる
- 3. CakePHPの異なる環境は?
- 4. TESTとDEVELOPMENT環境の異なるデータソース
- 5. 異なる環境のブートレール3.1
- 6. あるJavacと異なる環境
- 7. 環境によって異なるactionRequest
- 8. プログラム環境のWSO2アプリケーションインスタンスID
- 9. レンダリング後のマスターページのコントロールID
- 10. さまざまなサーバー環境でピクセルが異なる
- 11. Oracle Database:SQLクエリーが異なる環境で異なる動作をする
- 12. なぜschema.rbファイルが開発環境と運用環境で異なるのですか?
- 13. レンダリングされたPDFがプロダクト環境で動作しない
- 14. Windowsフォームアプリケーションがプロダクション環境で子フォームを閉じないActiveXコントロール
- 15. 異なる環境でのJodaTimeの奇妙な動作
- 16. 異なる開発者のための異なる「開発」環境
- 17. 異なるVim環境:別々のプラグイン、vimrcなど
- 18. Codeigniter - 異なるホストの環境を使用する
- 19. VMWare/Cygwin/Sockets環境でのNetcat異常
- 20. 異なる環境の接続文字列の分離
- 21. 異なるデプロイメント環境でのデフォルトのサーブレット・マッピング
- 22. .GlobalEnvと異なる環境へのメソッドのソーシング
- 23. 異なるターゲット環境のクロスコンパイルのためのビルド環境を構築することは可能ですか?
- 24. フォントMACレンダリングとMACレンダリングが異なる
- 25. Flashオーサリング環境異常なムービーの動作をテストする(AS3)
- 26. ExpressJs:異なる環境の構成変数
- 27. 異なる環境用の開発方法
- 28. 異なる環境の32ビットコードでチェックしますか?
- 29. 異なる環境用のMaven war/jarファイルバージョン
- 30. devとprod環境に異なるテンプレートレイアウトを使用する
これは、vb.netやjavascriptと関係していません。このタグを削除してください。 –