質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
onclick

onclickとはユーザーのクリック処理を指します。これは"onmousedown"(押下)と"onmouseup"(押上)の二つの事象の組み合わせです

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

Q&A

解決済

1回答

4028閲覧

asp.net LinkButtunのonclick属性

nao0201

総合スコア1

onclick

onclickとはユーザーのクリック処理を指します。これは"onmousedown"(押下)と"onmouseup"(押上)の二つの事象の組み合わせです

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

0グッド

0クリップ

投稿2020/05/22 15:18

編集2020/05/23 04:53

開発環境:visual studio2013 .netFramework4.5

ASP.NET WebFormsのLinkButtonで、
OnClientClick="this.form.target = '_blank';"を設定し、postbackurl="aaa.aspx"
で別ウインドウにPOSTBACKするようにしています。

さらに、onclik属性にサーバー側のクリックイベントに飛ぶようにしているのですが、
onclick="testfunc"
onclientclickで別ウインドウにPOSTBACKはできるのですが、
onclickのサーバー処理に入らないのです。

理想としては、サーバー処理(C#)を実行後、別ウインドウに遷移するようにしたいです。
WEBアプリは不慣れですがよろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/05/22 21:33

開発環境 (Visual Studio, .NET Framework のバージョンなど) を書いてください。 問題の種になることがあるクロスページポストバック (postbackurl) の使用は必須ですか? 使わないで済ませる方法を考えましょう。全体的に、どういうシナリオで何をしたいのかをステップバイステップで書いてください。そうしてもらえれば適切な方法を提案できると思います。
nao0201

2020/05/23 05:01

クロスページポストバックですが、外部サイトへリンクボタンからリンクするようにしています。 外部サイトへのSSOを実現するため、別ウインドウで表示し、ユーザ情報をPOSTしてほしいとの要望です。(必須) サーバー処理ではSQLSERVERへ接続し、リンクボタンが押された情報をLOGとして登録する仕組みです。 流れとしては、 リンクボタンが押された情報をSQLSERVERへINSERT(onclick="testfunc") ↓ 別サイトへPOSTBACK を実現したいのですが、デバックを行ってもサーバー処理が通ってないといった状況です。
退会済みユーザー

退会済みユーザー

2020/05/23 06:04

> クロスページポストバックですが、外部サイトへリンクボタンからリンクするようにしています。 ちょっと意味が分かりません。普通のポストバックは自分自身への POST、クロスページポストバックは自分自身と同じアプリケーション内の他の aspx ページへの POST になるはずです。それでも望むことができるのですか? > 外部サイトへのSSOを実現するため、別ウインドウで表示し、ユーザ情報をPOSTしてほしいとの要望です。(必須) そこも分かりません。「別ウインドウで表示し、ユーザ情報をPOST」すると SSO が実現できるというのも、自分の脳みその範囲ですが、普通に考えてあり得ない話と思うのですが。 ASP.NET Web Forms アプリことをあまりよくわかってない人が、実現不可能なことを考えているような気がするのですが。 違ったら失礼しました。
退会済みユーザー

退会済みユーザー

2020/05/23 06:13

> 流れとしては、 > リンクボタンが押された情報をSQLSERVERへINSERT(onclick="testfunc") > ↓ > 別サイトへPOSTBACK その流れだけで考えると、クロスページポストバックは使わずに、ボタンクリックで普通にポストバック ⇒ サーバー側のボタンクリックイベントのハンドラで SQL Server に登録 ⇒ 別サイトへリダイレクト(POSTBACK ではなくて)・・・というのが普通です。 その際別サイトにユーザー情報を渡したいということであれば、クエリ文字列を使う以外に方法はなさそうです。それで SSO とやらは実現できないかもしれませんが。
nao0201

2020/05/23 07:16

経験が浅く、実現できるかも手探りの中開発しております。。 上手くお伝えできずすいません。 外部のサイト(他のベンダー構築サイト、同一アプリケーションではない)へユーザ情報をPOSTで渡して欲しいと仕様(POSTした情報で外部サイトはログインできる)でありますので、クロスページPOSTBACKで渡そうと考えました。 postbackurl="自分自身と同じアプリケーションでは無いサイト"はできないのでしょうか? ※検討違いの事を言っていたらすいません。。 POSTBACKを使わずにPOST送信するというのができればよいのかと思いますが、おっしゃる通りの 「ボタンクリックで普通にポストバック ⇒ サーバー側のボタンクリックイベントのハンドラで SQL Server に登録 ⇒ 別サイトへリダイレクト」でいけそうな気もしますが。 クエリ文字で渡すのは要件と違いますのでNGです。
退会済みユーザー

退会済みユーザー

2020/05/23 08:08 編集

> postbackurl="自分自身と同じアプリケーションでは無いサイト"はできないのでしょうか? 絶対できないとまで言い切る自信はないですが、もし仮にできたとしても、「ボタンクリックで普通にポストバック ⇒ サーバー側のボタンクリックイベントのハンドラで SQL Server に登録 」という流れはどうしても必要なわけですから、その中にクロスページポストバックを入れられる余地はないと思いますけど。 流れの一番最後の「 ⇒ 別サイトへリダイレクト」というところで、自サイトのあるページにリダイレクトしてその応答が戻ってきたら、そのページに仕込んだクライアントスクリプトでクロスページポストバック相当のことをするというのが可能性として思いつきますが・・・ (思い付きレベルです。他のサイトに何をどういう形でポスつするのかもわかりませんので)
guest

回答1

0

ベストアンサー

おっしゃる通りの「ボタンクリックで普通にポストバック ⇒ サーバー側のボタンクリックイベントのハンドラで SQL Server に登録 ⇒ 別サイトへリダイレクト」でいけそうな気もしますが。クエリ文字で渡すのは要件と違いますのでNGです。

クエリ文字列が NG であれば、質問のコメントにも書きましたが、一番最後の「 ⇒ 別サイトへリダイレクト」というところで、自サイトのページにリダイレクトして、その応答が戻ってきたら、そのページに仕込んだクライアントスクリプトでクロスページポストバック相当のことをする方向で検討してはいかがですか?

別ページにリダイレクトしなくても、ポストバックでそのまま同じページが再描画されたときに、目的の別サイトに POST するクライアントスクリプトを仕込んで window.onload でそれを起動してもいいかもしれません。

動くかどうかわかりませんが、そのクライアントスクリプトは PostBackUrl を設定したボタンをクリックするだけでも良いかもしれません。

クロスページポストバックは、クライアント側は基本的にクライアントスクリプトで form 要素の action 属性が PostBackUrl プロパティに設定された url に書き換えられ、その後 form が submit されるという仕組みになっています。

クロスページポストバックはサーバー側の仕組みがいろいろあって、それがないと ASP.NET システム全体としての動作に支障が出るはずですが、他のサイトに POST するだけなら目的は果たせるかもしれません。ダメかもしれませんが。自分で検証してみてください。

投稿2020/05/23 10:21

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nao0201

2020/05/23 14:36

ご回答ありがとうございます。 linkbuttonのonclient属性(新規ウインドウ起動)を外して、 サーバー側で、クライアントの新規ウインドウを開き、そこにPOSTする処理をjavascriptで仕込んでみます。 今、開発環境が無い為、週明け検証してみます。
退会済みユーザー

退会済みユーザー

2020/05/24 01:02 編集

> サーバー側で、クライアントの新規ウインドウを開き、そこにPOSTする処理をjavascriptで仕込んでみます。 その言葉通りのことは不可能です・・・が、たぶん、「ボタンクリックで普通にポストバック ⇒ サーバー側のボタンクリックイベントのハンドラで SQL Server に登録 ⇒ 同じアプリの別 aspx ページへリダイレクト ⇒ その aspx ページに別サイトに SSO とやらに必要な情報を POST する JavaScript コードを仕込んでおいて window.onload で起動する」ということで、それがうまく文章で表現できてないだけであろうと想像して、結果の連絡をお持ちします。
nao0201

2020/05/25 13:10

>ボタンクリックで普通にポストバック ⇒すいません、ここが理解できませんでした。 残りの「サーバー側のボタンクリックイベントのハンドラで SQL Server に登録 ⇒ 同じアプリの別 aspx ページへリダイレクト ⇒ その aspx ページに別サイトに SSO とやらに必要な情報を POST する JavaScript コードを仕込んでおいて window.onload で起動する」で思った通りの処理を実装する事ができました。 (補足) > 同じアプリの別 aspx ページへリダイレクト  この後は元のページ(リンク元)に戻る必要がありましたので、別窓にPOSTした後javascriptにて元ページへ戻る処理を追記しました。 ※別窓で開いた時にポップアップがブロックされる別の問題が出てきましたが…(サファリ) 分かりやすくご教示頂き、ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問