ASP.NET3.5からASP.NET4へのアップグレードでの注意点

Visual Studioで3.5のプロジェクトを4にアップグレードすれば、自動で必要な設定をしてくれるが、この変換はサーバー側のアップグレードしか考えていない。クライアントは古いInternetExplorerを使い続けるならいいが、Edgeなど新しいブラウザに対応する必要があるなら、新しいASP.NETプロジェクトを作ってコードを移植したほうが無難だ。

controlRenderingCompatibilityVersion

Visual Studioでアップグレードすると、Web.configにcontrolRenderingCompatibilityVersion="3.5"が自動で入る。これが入ることで、ASP.NET4でも3.5と同じHTMLを出力するので、クライアントが古いままならこれで問題ないが、新しいブラウザではサポートしていない属性を使ったりするので、新しいブラウザだと逆効果だ。

気が付きにくいのが、RequiredFieldValidatorやCustomValidator。 controlRenderingCompatibilityVersion="3.5"になっていると、IE11やEdge用の初期化コードを出力しないため、機能しなくなる。 なお、

<xhtmlConformance mode="Legacy"/>
もアップグレードで自動挿入されるが、これがcontrolRenderingCompatibilityVersionと同じ副作用を出す場合がある。

ClientIDMode

ASPコントロールに自動生成されるIDの付け方がASP.NET3.5と4で変わっている。

JavaScriptで、ID指定でコントロールを参照・制御している場合は、この値を"AutoID"にすれば、IDの付け方が3.5と同じなるのでJavaScirptを書き換えたくないのであれば、この設定をするのが良い。

なお、Visual Studioでアップグレードした場合は、Web.configに

ClientIDMode="AutoID"
が自動で入る。

AJAX Control Toolkit

Microsoftから提供されなくなったが、メンテは続けられていている。

ただし、ASP.NET4からはScriptManagerが変わっているので、設定の仕方が大きく変わっている。インストレーションガイドを参考にするとよい。

コメント

このブログの人気の投稿

ORACLEのCHAR型とPostgreSQLのchar型は似て非なるもの

Tomcat10 + log4j2

XBox360コントローラドライバのせいでコア分離セキュリティが有効にできない場合