- PR -

ASP.NETでのページ間のデータのやりとりについて

1
投稿者投稿内容
権兵衛
会議室デビュー日: 2008/03/30
投稿数: 5
投稿日時: 2008-06-02 20:51
いつもわからないことがあるとこちらを参考にさせていただいています。
次のようなことをしたいと考えています。

1:"A.aspx"と"B.aspx"という2つのページを開く。
2:"A.aspx"のテキストボックスの内容を"B.aspx"のテキストボックスに貼り付ける

普通ならなんてことのないような内容なのですが,問題なのは,
"B.aspx"の方は他人様の作ったページであるということです。
つまり,"A.aspx"の方は自分で作ったものなので,プログラムが可能ですが,
"B.aspx"の方は一切手を加えられません。
状況としては,

1:"B.aspx"の貼り付け先のテキストボックスのIDはわかっている。
 ("B.aspx"の具体的なURLもわかっています)
2:本来,手入力で"B.aspx"に入力すればいいものを,横着して
  "A.aspx"の内容を貼り付けてしまおうとしている。
3:コンピュータの操作に不慣れな人でも出来るように,ボタン一発で
  貼り付けが出来るように"A.aspx"の方にプログラムを組み込んでしまいたい。

という感じです。違うページのWeb Controlにアクセスするためのプログラム方法
がよくわかっていないので,そのあたりのことをご教示願えれば幸いです。
よろしくお願いします。
もん吉
常連さん
会議室デビュー日: 2008/05/16
投稿数: 36
投稿日時: 2008-06-02 21:02
framesetではなく全くの別ページでしょうか。

framesetであればJavaScriptで可能です。

別ページの場合はB.aspxを変更できるのであれば
クロスページポストバックでできると思います。
権兵衛
会議室デビュー日: 2008/03/30
投稿数: 5
投稿日時: 2008-06-02 21:10
ご返事ありがとうございます。FrameSetではなく全く別のページです。また,
"B.aspx"の方は自分で作ったものではなく,一切手は加えられません(それが引っかかっている原因です)。その前提で,何か方法があれば,と思い投稿しました。
どうしても無理ならあきらめるしかないのですが,ぎりぎりまで考えてみたいと考えています。
ほかにも何か参考になることをご存じの方がいらっしゃいましたら,よろしくお願いします。もん吉さんありがとうございました。
kiyokura
ベテラン
会議室デビュー日: 2007/08/08
投稿数: 69
お住まい・勤務地: 岡山
投稿日時: 2008-06-03 00:48
もし、b.aspxを表示するブラウザのウィンドウをa.aspxからオープン可能で、かつ双方が同一ドメイン上にあるなら、javascriptでどうにか要求を満たせるかもしれません。
(といいますか、少なくともb.aspxに手を入れれない以上、ASP.NETのサーバサイド処理は無関係な話になります。)

ブラウザのjavascriptのセキュリティが許す範囲であれば、window.openでb.aspxを開いた後、その戻値(開いたwindowオブジェクト)をキープしておけば、そのwindowオブジェクトを使ってb.aspxの要素にアクセスすることは出来ます。
コード:
var WinB;
function OpenB(){
    WinB=window.open('b.aspx');
}
function SetAtoB(){
    //b.aspxのテキストボックスのidが'bTextBox'、
    //a.aspxのテキストボックスのidが'aTextBox'とする
    WinB.document.getElementById('bTextBox').value = window.document.getElementById('aTextBox').value;
}



ただし、最初にも書いたとおり、a.aspxとb.aspxが別ドメインにある場合は(ブラウザやバージョンによるかもしれませんが)、通出来ないと考えた方が良いと思います。
#手元のIE7では出来ませんでした。

権兵衛
会議室デビュー日: 2008/03/30
投稿数: 5
投稿日時: 2008-06-03 21:19
kiyokuraさん,アドバイスありがとうございます。試してみたところ,テスト用に自分で作ったページではうまくいったのですが,実際に対象となるページに対しては「アクセスが拒否されました」とエラーが返ってきてうまくいきませんでした。
やはり少し難しそうです。ところで,

コード:−−−−−
WinB=window.open('b.aspx');
---------------

とした場合,"WinB"というオブジェクトは,サーバーにあるページの方にハンドルされるのでしょうか?それともブラウザの方で読み込んだものに対してハンドルされるのでしょうか?少し疑問に思ったので,教えていただければありがたいと思います。

いずれにしても,いろいろなアドバイスをいただけて,また1つ勉強になったような気がします。また質問をすることもあると思いますがよろしくお願いします。
もん吉
常連さん
会議室デビュー日: 2008/05/16
投稿数: 36
投稿日時: 2008-06-03 21:45
kiyokuraさんが書かれている通りJavaScriptによる手段なので
サーバ側ではありません。

クライアントサイドの話とサーバサイドの話を混同されてませんか?

ASP.NETはあたかもWindowsアプリケーションのように
組めてしまうところがそうさせているのかも知れませんが、
混同されているようであれば基本的なところからもう少し
理解された方がよいのでは。
と思います。
今後のためにも。
1

スキルアップ/キャリアアップ(JOB@IT)