Topへ

開発ブログ(Blog)

webアンケートシステムの構築を行いました

今回は展示会設営企業様からのご依頼で、非接触型アンケートシステムを構築いたしました。

展示会にいらしたお客様からアンケートを取らせていただくシステムなのですが、今まではブースに設置していたタブレット端末で順次アンケートに回答していただく

形式が多かったと存じます。

この度は、コロナの影響があり毎回消毒するのも大変だしってことで、お客様にQRコードを読み取っていただきアンケートページにアクセスする方式のシステムを作成しました。


asp.net

弊社は、長年マーケッティングリサーチを行っている会社様のアンケートシステムを開発・運用してきましたので設計的にはあまり苦労はしなかったのですが、スマフォでお客様の

名刺の写真を取り込むところが、結構苦労しました。

いつもながら泣かされる部分なんですが、iphoneとandroidの仕様の違いがあります。

あとは、アンケートを対話形式で定義する部分のjavascriptの作り込みが厳しかった💧

最近インフラ構築の仕事が多くシステムの構築サイクルが間延びしてまして、javascriptの言語構文の細かい作法、結構忘れてるんですよね。

開発しだすと思い出すんですが😁

現、菅政権のブレーンである デービッド・アトキンソン氏が日本の中小企業は生産性が低いって言ってますけど、たしかにそういうところがあります。ソフト業界では。

似たような仕事を繰り返せば、開発効率は上がりますが。営業的な戦略が必要だし、方向性を間違えると全然仕事が取れないってことにもなりかねないので、
ついつい目先の仕事をこなしてしまう。
 
 

IE11のブラウザでasp.netで不具合

IE11のブラウザでasp.netで不具合がまたもや発生

【状況】

ログイン処理でIE以外のブラウザとIE8未満のブラウザの場合、エラー画面を表示させていたが、IE11の場合IEと見なされずにエラー画面が表示されてログインできないようになりました。

 

【発生環境】

Windows2008Server + asp.net + Internet Explorer11

 

asp.netのプログラム内で下記のようなチェックを行っていたのですが、なんとRequest.Browser.Browserで返される値が'IE'ではなくて

'Mozilla'が返されるようになっているではないですか。

Dim browser As String = Request.Browser.Browser
Dim major As Integer = Request.Browser.MajorVersion()

'ログ出力処理
Dim log As Log = log.getInstance
'ブラウザの確認を行いIE8以上で無ければエラー画面にリダイレクトを行う
If browser <> "IE" Then    ←★ この判定でIE10以下は'IE'と返されるがIE11だと'Mozilla'が返される ★
        log.OutputLog(enmLogLevel.ERR, CNS_FRAMEWORK_ERR_MESSAGE_010 & String.Format(" browser:{0}", browser))
  Response.Redirect(SESSION_BROWSER_ERR_PAGE, True)
Else
 If major < 8 Then
     log.OutputLog(enmLogLevel.ERR, CNS_FRAMEWORK_ERR_MESSAGE_010 & String.Format(" major:{0}", major))
  Response.Redirect(SESSION_BROWSER_ERR_PAGE, True)
 End If
End If

 

いままでIEのユーザエージェント文字列は

 

【IE8】

Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648)

 

【IE9】

Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)

 

【IE10】

Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)

だったのですが

 

【IE11】

Mozilla/5.0 (IE 11.0; Windows NT 6.3; Trident/7.0; .NET4.0E; .NET4.0C; rv:11.0) like Gecko

 

というように'MSIE'から'IE'に変わってしまっています。

表示系コントロールで自動付加されるhtmlタグ

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

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

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

 

 

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

<div id="testdiv" runat="server"></div>

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

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

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