0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ASP.NETでコード側の判定次第で画面 (ページ) を閉じる

Last updated at Posted at 2017-05-07

ASP.NETで登録ボタン等を押した際、成功時は画面を閉じ失敗時は閉じずにエラーメッセージなどを出すということがしたい。

結論: ClientScript.RegisterClientScriptBlockを使用

Private Sub RegistrationClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RegistrationButton.Click

Dim result As Boolean = False

If(registration(Me.params))
  ClientScript.RegisterClientScriptBlock(Me.GetType(), "key", "window.alert('成功ですさよなら');window.close()", True)
Else
  Me.error.Visible = True
EndIf

End Sub

上記のRegisterClientScriptBlockを使用するとページを描画せずにアラート (閉じるとウィンドウもそのまま閉じる)。
RegisterStartupScriptに変えるとページを描画してからアラートが出る。

Response.Write("<script language='javascript'> { window.alert('成功ですさよなら');window.close();}</script>")

でも同じ動作自体は実現できるようです。
参照元: Re[3]: webページのボタンを押したら画面が閉じるようにしたい

上の方法の方がよろしそうな気はしますが。

以上。残りは経緯というか、手間取った言い訳というか。

ボタンに最初からOnclickイベントでWindow.Closeを仕込んでいると、Confirmでキャンセルしても画面が閉じてしまうしバリデーションエラーを表示してもユーザがそれを見ることもできないうちに画面が閉じる。
かといって、登録成功時にボタンのOnclickイベントにWindow.Closeを追加するようにしても動作するのは再びボタンを押下した際となって意味がなかった。

やりたいことから検索ワードを考えて探しても上の Onclick でウィンドウを閉じる方法に関する日本語ページしか見つからず、onload 使ってやればいけるのではと気づいてようやくヒントとなるページに到達。

定番の動作だと思うんですけど ASP.net の標準機能 (?) でできないようですし記事もぱっと見つからないというと、あんまりこういう動作をしたいシチュエーションってないものなんでしょうか?

ちなみに、検索語に stack overflow を加えて最初から決め打ちにするといい感じのページが出てくるらしい。
Windowとかcloseとかグーグラビリティの低い検索ワードが多くなってしまうネタだったので日本語ページがノイズになって自然には到達できませんでした。無念。

0
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?