- PR -

[ASP.NET C#] submitさせるとオブジェクトエラーになってしまう

1
投稿者投稿内容
村長
ベテラン
会議室デビュー日: 2005/04/20
投稿数: 67
投稿日時: 2005-11-29 17:09

親画面上のボタン押下で子画面をモーダル表示させ、子画面が閉じた時に
親画面が子画面から情報を受け取り、処理を行うことをしています。
以下は子画面を表示する時のコードになります。

script = "<script language=JavaScript>" +
"window.showModalDialog('画面',window," +
"'status=false;dialogWidth:492px;dialogHeight:512px');" +
"Form1.submit();</SCRIPT>";
RegisterStartupScript("NewOpenWindow",script);

子画面を閉じると親画面をsubmitさせてます。

これで一応うまくいくのですが、
ブラウザのインターネットオプションの詳細設定で
「スクリプトエラーごとに通知を表示する」にチェックすると
「contentWindow.documentはNullまたはオブジェクトではありません」という
エラーが表示されてしまいます。

submitがエラー原因であることはわかったのですが、どうすれば解決できるか
わかりません。
ご教授お願いします。

[実現したいこと]
子画面が閉じたらそのまま親画面をポストバックさせたい

村長
ベテラン
会議室デビュー日: 2005/04/20
投稿数: 67
投稿日時: 2005-11-29 18:30

自己レスです。

SmartNavigationを設定していたのが原因でした。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2005-11-29 21:59
引用:

村長さんの書き込み (2005-11-29 18:30) より:

自己レスです。

SmartNavigationを設定していたのが原因でした。



それは濡れ衣のような?まぁ、SmartNavigation の動作原理も、原因の一端ではありましょうが。

 HTML、form 要素がきちんと閉じていないのに提出しようとしたから、じゃないかなぁ???
___________________________________________________________________
□ written by Jitta on 2005/11/29
□ Microsoft MVP :Visual Developer ASP/ASP.NET Oct.2005-Sept.2006
_________________
ぶさいくろう
ぬし
会議室デビュー日: 2005/11/22
投稿数: 1232
お住まい・勤務地: 川崎市(は俺も含めてロクな人間が住んでないよw)
投稿日時: 2005-11-30 09:22
引用:

ブラウザのインターネットオプションの詳細設定で
「スクリプトエラーごとに通知を表示する」にチェックすると
「contentWindow.documentはNullまたはオブジェクトではありません」という
エラーが表示されてしまいます。


チェックしなくてもエラーはもともと起きていたという認識も持って欲しいかな。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2005-12-01 06:18
引用:

Jittaの書き込み(2005-11-29 21:59)より:

 HTML、form 要素がきちんと閉じていないのに提出しようとしたから、じゃないかなぁ???


 RegisterStartupScript の説明には、こうあります。
引用:

Page オブジェクトの <form runat= server> 要素の終了タグの直前にスクリプトを出力します。


つまり、出力される予定の HTML は、次のようになります。
コード:
<html>
  <head>...</head>
  <body>
    <form id="Form1">
      ...
      <script>
        window.showModalDialog...
        Form1.Submit();//ここでぶった切られる
      </script>
    </form>
  </body>
</html>


要素の完了が送られてきていないので、オブジェクトとして完成しているのかどうか、わからないわけですね。

 SmartNavigation は、他の人の投稿から、インラインフレームを利用しているらしいです。このため、IE の履歴にも残らない、と。で、submit しようとしたけれども、オブジェクトが完成していないので参照できず、「contentWindow.documentはNullまたはオブジェクトではありません」というメッセージが出てくるのでしょう。

 なので、SmartNavigation が悪い、と思われているなら、それは濡れ衣で、オブジェクトを完成させないような動作をさせる方が悪い、と思います。
 FIX: A program may stop responding, and you may experience other unexpected behaviors when a new modal dialog box opens in an ASP.NET program(日本語だと機械翻訳のため、かなり頓珍漢)というのもありますが、これは ShowModal されたウインドウで SmartNavigation を使っている場合、の様に思います。
___________________________________________________________________
□ written by Jitta on 2005/11/30
□ Microsoft MVP for Visual Developer ASP/ASP.NET Oct.2005-Sept.2006
_________________
1

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