ASP.NET 4のClientIDModeの正しい設定は何ですか。ASP.NET2.0レンダリングを取得します。

StackOverflow https://stackoverflow.com/questions/3008015

  •  26-09-2019
  •  | 
  •  

質問

ASP.NET 2.0からASP.NET 4.0にアプリケーションを更新しました。

web.configに含まれています <system.web> エレメント:

<pages controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID" />

私の理解では、これはコントロールを.NET 2.0/3.5がするのと同じにすることになっているということです。

しかし...そうではありません...これが一例です

これは2.0でレンダリングされます:

<input id="grdUserEntity__ctl1_chkSelectAll" type="checkbox"
   name="grdUserEntity:_ctl1:chkSelectAll" onclick="javascript:iSelectAll();" />

これは4.0です:

<input id="grdUserEntity_ctl01_chkSelectAll" type="checkbox" 
   name="grdUserEntity$ctl01$chkSelectAll" onclick="javascript:iSelectAll();" />

違い:

2.0 id=grdUserEntity__ctl1_chkSelectAll
4.0 id=grdUserEntity_ctl01_chkSelectAll

私が読んだことに応じて、その構成設定により、ASP.NET 4.0がサーバーコントロールとクライアントIDを以前のバージョンと同じようにレンダリングします。

私たちは何が間違っているのですか?

役に立ちましたか?

解決

ASP.NET 2.0からASP.NET 3.5にIDがどのようにレンダリングされたかに変更がありました。あなたは2.0から4.0に行くので、あなたはまだその違いを見ています。この変更は、XHTMLコンプライアンスの改善によるものでした。

XHTMLComplianceコンパート設定で2.0レンダリングに戻りてみてください。さらに別のcompat設定、はい:)それは機能するはずですが、正直なところ、古いcompat設定が4.0であることがどれだけよくテストされているかはわかりません。それ。

2.0レンダリングを維持したい理由はありますか?回帰を恐れているだけですか、それとも実際の回帰を知っていますか?

XHTML設定: http://msdn.microsoft.com/en-us/library/ms178159.aspx

他のヒント

この投稿の将来の読者の場合、互換性の問題を緩和することができます。 <%=objectid.ClientId %> ASP.NETページに構築します。

例:TXTINPUTと呼ばれるテキストボックス(ASP.NETがID = CTL00_CPHMAINCONTENT_TXTINPUTとしてレンダリングする)と仮定します。次のJavaScriptコードでASP.NETページでそのオブジェクトを参照できます。

str txtInputObjNm = "<%=txtInput.ClientId %>";

実行時に、次のクライアント側JavaScriptに自動的に変換されます。

str txtInputObjNm = "ctl00_cphMainContent_txtInput";

.NETがclientIDの割り当て方法を変更するように「決定」した場合でも、コードは機能します。

4.0アプリケーションで pages controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID" スタイリングを完全に台無しにします Site.master ページ。たとえば、メニューはデザイナーではほとんど見えず、ブラウザでスタイリングを完全に失います。基本的に、デザイナーではスタイリングが失われます。

ターゲットフレームワークを4.0から3.5に設定し、4.0に戻ることでこれを見つけました。この後、スタイリングは複雑になりました。すべてのファイルを良いアプリと比較した後、私はついにこの行を見つけました web.config. 。私はそれを削除し、私のスタイリングの問題は消えました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top