Webシステム開発はお任せください
  • 開発ブログ

↑Topへ

開発ブログ

IE11のブラウザでasp.net(.net framework 4)で不具合(2013/10/30)

IE11のブラウザでasp.net(.net framework 4)で開発されたサイトにアクセスすると動作しなくなるケースがあります。

 【状況】
昨日windows8.1のマシンから前述のシステムへアクセスしたところ「__doPostBack' は定義されていません。」というエラーが発生。
サーバー側のクリック イベントが起動されません。

 

 【発生環境】
Windows2008Server + asp.net(.net framework 4) + Internet Explorer11

半年くらい前にもframework3.5 + Internet Explorer10でそのようなことがありました、サーバー側のユーザーエージェントの判定が今までIE5~9で数字部分の判定が正規表現チェック(^[5-9])で良かったのですが、IE10になったため当該正規表現では誤判定しているものでした。

 

IEもasp.netもMicrosoftのプロダクトなのでもう少しきちんとチェックして欲しいものです。

 

で今回はサーバー側でIE11を未知のブラウザと認識しCookeiが正しく処理されないとのこと。

 

googleで検索してみると

 

http://support.microsoft.com/kb/2836939

 

がひっかかりました、早速サーバーにて実行し問題解決。

 

表示系コントロールで自動付加されるhtmlタグ(2013/10/16)

asp.netには以下の表示系コントロールがありますが、実行時それぞれのhtmlタグが自動的に付加されます。CSSやjavascriptなどを生成する場合、自動的にhtmlタグが付加されてしまうと不都合な場合があります。その場合、 literalコントロールを使用します。

コントロール 自動付加されるhtmlタグ
labelコントロール span
panelコントロール div
placeholderコントロール 何も付加されない
literalコントロール 何も付加されない

HtmlGenericControl は、特定の HTML サーバー コントロールによって直接表されないすべての未知の HTML サーバー コントロール タグ (spandivbodyなど) に対応して、ASP.NET サーバー コントロールを実装します。

 

 

実装方法ですが、例えばdivを定義する場合、

 

というようにサーバコントロールとして定義します。

サーバサイドでこのdiv要素はHtmlGenericControlクラスとして生成されます。

HtmlGenericControlはプロパティとしてinnerHtmlを実装していますので、このプロパティにHTMLを設定すればサーバサイドでもHTMLの出力が可能となります。