2017-01-19 13 views
0

最近、あるサーバーから別のサーバーにWebサイトを移行しました。 WebサイトはIIS上で正しくセットアップされており、接続することができます。しかし、私はasp.netコントロールのために.netによって追加されるプレフィックスに関する問題に直面しています。テキストボックスのようなasp.netコントロールは、コントロールの名前に自動的にct100_の接頭辞を付けます。これは、私がct100_nameofthecontrolをjavascriptで参照したときにうまくいきました。しかし、今の接頭辞を例

についてCT100の$代わりのct100_

に変更されました私は、ページ上の名前txtSearchNameとasp.netコントロールテキストボックスを持っています。ページには、テキストボックスの名前が移行ctl00_bodyContent_txtSearchNameではなく後txtSearchNameから変更されたレンダリングされる場合は、同じ名前がctl00 $のBodyContent $ txtSearchNameに変更されています。

new server naming

方法または$と_を変更する設定はありますか私はjavascriptのコードへの参照を変更する必要がありますか?が

コードがClientIDModeには、コントロールのために静的に設定しておく必要があります。

enter image description here

おかげでソリューションを更新

を助けてください。しかし、アプリケーションは既に開発者によって構築されていました。このバグは、サーバーが変更されたときに発生しました。コードを変更する必要がある場合や、ある時点でコードを簡単に破損する可能性がある場合は、大変な作業でした。 _と$記号はCLRのバージョンに依存します。私は、IISマネージャのアプリケーションプールでCLRバージョンをV4.0からV2.0に変更し、すべてが再び機能していました。

+1

あなたのコントロールで 'ClientIDMode =" Static "'を試すことができます。これはあなたがそれがそれを変更しないことを与えるだろうとあなたが今まで名前で何を保証します。 –

+1

ASP.NETからクライアントサイドIDを取得し、他の動作に依存しないでください。そうすれば、それはいつもうまくいくでしょう。今や構造の少しの変更だけですべてが簡単に壊れます。あるいはAfnanのような静的な名前を使用してください。 –

答えて

1

JavaScriptでIDをハードコードしないでください。実際にClientIDMode="Static"を使用することもできますが、IDの重複を招く可能性があるため、推奨されません。より良い使い方ClientID

$("#<%= txtSearchName.ClientID %>").val(''); 
$("#<%= txtSearchName.ClientID %>").focus(); 
関連する問題