9

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

<system.web>要素の web.config に含めました。

<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 を以前のバージョンと同じようにレンダリングします。

私たちは何を間違っていますか?

4

3 に答える 3

12

IDのレンダリング方法がASP.NET2.0からASP.NET3.5に変更されました。2.0から4.0に移行するので、まだその違いが見られます。この変更は、XHTMLコンプライアンスの改善によるものです。

xhtmlCompliance compat設定を使用して、2.0レンダリングに切り替えてみることができます。さらに別の互換性設定、はい:)動作するはずですが、正直なところ、古い互換性設定が4.0でどれほど十分にテストされているかはわかりません。また、使用を計画している場合は、UpdatePanelと互換性がないことはわかっています。それ。

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

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

于 2010-06-10T05:42:06.240 に答える
1

この記事を今後読む方のため<%=objectid.ClientId %>に、ASP.NET ページで構造体を使用することにより、互換性の問題を軽減できます。

例: クライアント側の JavaScript コードで参照する必要がある txtInput (ASP.NET は id=ctl00_cphMainContent_txtInput としてレンダリングする) という名前のテキスト ボックスがあるとします。ASP.NET ページで次の JavaScript コードを使用して、そのオブジェクトを参照できます。

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

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

str txtInputObjNm = "ctl00_cphMainContent_txtInput";

.NET が clientid の割り当て方法を変更することを "決定" した場合でも、コードは機能します。

于 2012-03-23T00:17:20.550 に答える
1

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

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

于 2014-07-25T15:04:29.910 に答える