忍者ブログ

マジックナンバー

彼と時間を共有するぼくは、彼の何を知り得るのだろう

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

ASP.NETで非同期通信を目指す

最近C#を勉強しています。と言っても書籍を参考に...とかではなく
知らないワードなどはぐぐりながら使っていく感じで、行き当たりばったりです。
せっかくなのでASP.NETを利用したWebアプリケーションも並行しながら作成してます。

しかし非同期通信を実装するにあたって数ヶ月詰まったので、忘れないようにメモしておこうと思います。
開発環境がVisualStudio2012のためか、
非同期通信に必要(?)なScriptManagerコントロールUpdatePanelコントロールが使えないんです。
アセンブリ参照が不足してるとやらで・・・。

仕方がないのでいろいろぐぐってみて
ICallBackEventHandler インターフェイスとやらが使えそう・・・
(参考:アットマーク・アイティ 様 → ページを再読み込みせずにサーバと通信を行うには?
ということで利用してみたところ
非同期通信はできるっぽいのですが、OnClientClickイベントから
asp:TextBoxなどのサーバコントロールにアクセスしても期待している文字列を取得できない。
詳しいことはわかりませんが、恐らくページをロードしたとき格納されている値を取得しているのだと思うんです。
TextBoxクラスのTextメソッドを呼び出すと、ページ読み込み時に格納されてたテキストデータを取得していたので。。。
そしてjQuery uiのdialogと相性が悪いのかダイアログ上のサーバーコントロールは動作すらしないという・・・。
(参考:あぽなエンジニアの覚書き 様 → ASP.NETとjQueryのDialogを使用した場合にポストバックされない

そこでHTTPハンドラというものを使ってみました。
(参考:ASP.NET入門 様 → HTTP ハンドラの基本 - ジェネリック HTTP ハンドラとは?
jQuery.ajaxでHTTPハンドラにデータをPOSTすることで非同期通信できた!
このjQuery.ajax、contentTypeオプションでサーバーに送信するcontent-typeを弄れるみたいなんですが、
jsonで渡してもHTTPハンドラで受け取ったとき、処理の仕方がよくわからなかった為
( JavaScriptSerializer クラスが使えなかった)
初期値(application/x-www-form-urlencoded)で渡すことに・・・

妥協したところが多いですが、とりあえず非同期通信が出来たので満足な感じです
問題はアップロードして動くかどうか。。。
というよりもこの方法で良かったのだろうか

コメント

お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード Vodafone絵文字 i-mode絵文字 Ezweb絵文字

プロフィール

HN:
No Name
性別:
非公開
自己紹介:
浅学非才の若輩者ですが、がんばります!

カレンダー

09 2017/10 11
S M T W T F S
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31

フリーエリア

最新CM

[05/24 NONAME]
[05/24 NONAME]
[12/08 NONAME]
[11/27 みかき]

ブログ内検索

P R