![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?08b1c8b)
※こちらの派生です。
http://oshiete1.goo.ne.jp/qa5222698.html
マスターページに配置したボタンのクリックイベントを
コンテンツページ(?マスターページを使用するページ)で
拾うことは可能でしょうか?
もしくは、マスターページに配置したボタンのクリックイベントの処理を
コンテンツページで実装することは可能でしょうか?
ボタンの配置は同じだけれど、メソッドの中の処理は
コンテンツページ毎に分けたいのです。
例えばマスターページ「hoge」とコンテンツページ「moge」があったとすると
以下のような感じです…。
---------------------------------------------------------------------------
==============
hoge.Master
==============
<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="hoge.master.cs" Inherits="xxx.hoge" %>
<asp:Content ID="Content3" ContentPlaceHolderID="FooterContentPlaceHolder" runat="server">
<asp:Button ID="btn" runat="server" Text="ぼたん" onclick="btn_Click" />
</asp:Content>
==============
hoge.Master.cs
==============
protected void btn_Click(object sender, EventArgs e)
{
// ここではなく
}
==============
moge.aspx
==============
<%@ Page Language="C#" MasterPageFile="~/hoge.Master" AutoEventWireup="true" CodeBehind="moge.aspx.cs" Inherits="xxx.moge" Title="もげ" %>
==============
moge.aspx.cs
==============
protected void btn_Click(object sender, EventArgs e)
{
// ここにボタンが押された際の処理を実装したい
}
---------------------------------------------------------------------------
よろしくお願い致します。
No.2ベストアンサー
- 回答日時:
質問内容が間違っていると指摘しましたが、恐らく下記のようなことをやりたいんじゃないかと思い、推測で答えを書いてみました。
ご確認ください。
==============
hoge.Master
==============
<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="hoge.master.cs" Inherits="MasterPage" %>
<asp:contentplaceholder id="FooterContentPlaceHolder" runat="server">
<%-- ここにaspxのコンテンツをaspxファイルで配置してもらう --%>
</asp:contentplaceholder>
<%-- MasterPage に配置したボタン--%>
<asp:Button ID="btn" runat="server" Text="ぼたん" />
==============
hoge.Master.cs
==============
public partial class MasterPage : System.Web.UI.MasterPage
{
// aspx側に公開するボタンのクリックイベント
public EventHandler btnClick_PageHandler;
// MasterPage表示時
protected void Page_Load(object sender, EventArgs e)
{
// aspx側で処理するボタンのクリックイベントが設定されていたら
if (btnClick_PageHandler != null)
{
// aspx側で定義したボタンクリックイベントを設定する
btn.Click += btnClick_PageHandler;
}
}
}
==============
moge.aspx
==============
<%@ Page Language="C#" MasterPageFile="~/hoge.Master" AutoEventWireup="true" CodeBehind="moge.aspx.cs" Inherits="xxx.moge" Title="もげ" %>
==============
moge.aspx.cs
==============
protected void Page_Init(object sender, EventArgs e)
{
// MasterPageのインスタンスを取得する
ASP.hoge_master m = (ASP.hoge_master)this.Master;
// MasterPageにあるボタンにクリックイベントを付与する
m.btnClick_PageHandler += new EventHandler(this.MasterPageButton_Click);
}
private void MasterPageButton_Click(object sender, EventArgs e)
{
// ここにMasterPageで定義したボタンのクリックイベントを実装する
}
もし、質問したかった内容と回答内容が違うようであれば、もう一度、情報を整理してご質問頂けるとた有難いです。
宜しくお願いします。
No.5
- 回答日時:
すみません、回答番号:No.4は上記URLに転記しました。
回答番号:No.4についての回答は、
大変お手数ですがこちらを参照頂く様お願いいたします。
参考URL:http://ap.atmarkit.co.jp/bbs/core/fdotnet/16690
No.4
- 回答日時:
すみません、少し前の話なんですが便乗させて下さい。
私もよく分からないので、ググってみたら
こちらのページにたどり着きました。
[aspnet]さんの回答を参考に
【マスタページ側に、@MasterTypeディレクティブを追加、Name属性を書き、コードビハインドのクラス名で固める】
方法が簡単でかつ汎用性があるなあ、と思って
やってみよー!、と思ったのですが、
「マスタページ」に
「<@ MasterType Name="Hoge"@>」を追加したのですが、
「属性 'Name' は要素 'MasterType' の有効な属性ではありません」
エラーが発生し、追加できません。
似たようなプロパティで「TypeName」があったので、
<%@ MasterType TypeName="Hoge" %>としてみましたが、
今度は「型 'hoge' を読み込めませんでした。」の
エラーが発生してしまいます;;。
[aspnet]さんの回答内容を実現できる方、いらっしゃいませんか?
アホな私にやり方を教えて下さい…;;。
いろいろググってると、「MasterType 」はコンテンツページ(~.aspx)に書くようなんですが…。
これをマスタページに書くこともできるんですか?
以上です。便乗申し訳ありません。
No.3
- 回答日時:
MasterPage上のオブジェクトを、コンテンツページから捕捉したい、ということですよね?
(コントロールイベントを拾ったり、プロパティに値をセットしたい……etc)
ならば、
【マスタページ側に、@Masterディレクティブを追加、ClassName属性を書き、これをコンテンツページから指定する】
<%Master ClassName="Hoge">としておき、コンテンツページから、
((ASP.Hoge)Master).btn
でコントロールが可視になります(エディタ上でIntelliSense効く)。
【マスタページ側に、@MasterTypeディレクティブを追加、Name属性を書き、コードビハインドのクラス名で固める】
<@ MasterType Name="Hoge">としておき、コンテンツページから、
Master.btn.なんたらかんから
でコントロールが可視になります。こちらの方法がオシャレ?
要するに、「オイラのMasterとしての型はHogeだ」と宣言するわけです。
コンテンツページがマスタページを参照するには、必ずMasterプロパティを使います。こいつはよくわからないのですが、動的にコンパイルされるマスタページをコンテンツページから見た型のようです。
Master.FindControl("xxx")とかで探す方法もありますが、インテリセンスが利かない泥臭いやりかたはスルーでしょう。
No.1
- 回答日時:
hoge.Masterに、
<asp:Content ID="Content3" ContentPlaceHolderID="FooterContentPlaceHolder" runat="server">
<asp:Button ID="btn" runat="server" Text="ぼたん" onclick="btn_Click" />
</asp:Content>
という記述があるということは、さらなるMasterPageを参照させてますか?
質問内容を見る限り、moge.aspx の記述なのではないかと思いますが、間違いございませんか?
正しい情報を頂かないと正しい回答もできないと思うので、
申し訳ございませんが、もう一度、質問内容を整理して
頂けないかと思います。宜しくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript JavaScriptで「〇以上▲まで」の書き方 1 2022/07/20 14:44
- HTML・CSS 全部のアクセスを指定したページに転送させたい 2 2022/06/28 16:33
- HTML・CSS htmlで画面遷移させたい 1 2022/10/28 18:19
- JavaScript javascriptで移動ボタンを押した際に遷移するボタンを追記したい 1 2022/11/29 03:02
- Windows 10 バッチファイルの記述法とルールについてアドバイスをお願いいたします。 1 2022/04/13 10:50
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- HTML・CSS CSS のみのタブ切り替えについて 1 2023/01/11 16:47
- JavaScript Javascript初心者|jQueryの.val()で値を取得し複数の要素を連結させる方法知りたい 2 2022/06/02 12:06
- Excel(エクセル) 【エクセルマクロ】既に開いているIEの、サイズや表示位置を変更するには 4 2022/12/01 22:57
このQ&Aを見た人はこんなQ&Aも見ています
-
好きな人を振り向かせるためにしたこと
大好きな人と会話のきっかけを少しでも作りたい、意識してもらいたい…! 振り向かせるためにどんなことをしたことがありますか?
-
歳とったな〜〜と思ったことは?
歳とったな〜〜〜、老いたな〜〜と思った具体的な瞬間はありますか?
-
モテ期を経験した方いらっしゃいますか?
一生に一度はモテ期があるといいますが、みなさんどうですか? いまがそう! という方も、「思い返せばこの頃だったなぁ」という方も、よかったら教えて下さい。
-
あなたの人生で一番ピンチに陥った瞬間は?
これまでの人生で今振り返ると「あの時、1番ピンチだったなぁ...」という瞬間はありますか?
-
思い出すきっかけは 音楽?におい?景色?
記憶をふと思い出すきっかけは 音楽、におい、景色 どれですか?
-
マスターページからコンテンツページのメソッドを実行したい
Microsoft ASP
-
【ASP.NET】フォームの継承は出来ますか?
Microsoft ASP
-
ASP.NET(VB)VBソースからJavascriptの関数を呼ぶには
Microsoft ASP
-
-
4
Page_Load時にボタンクリックイベントを実行するには?
Microsoft ASP
-
5
ASP.Net ラベルの内容をすぐに更新したい
Microsoft ASP
-
6
ASP.NETのコントロールの値をJavaScriptで取得
JavaScript
-
7
Webページ上のボタン等の位置を移動したい。
Microsoft ASP
-
8
vb.net web 動的に作成したTableが消える
Visual Basic(VBA)
-
9
ASP.netで、CheckBoxListのSelectedIndexChangedが発生しません!
Microsoft ASP
-
10
【C#】Page_Loadさせない方法について
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
複数選択のListBoxでClickイベ...
-
VBAで一時中断したプログラムの...
-
エクセルVBAで画面の大きさを取...
-
VB.netでボリュームレベルメー...
-
submitボタンにvalue属性の値で...
-
formの名前はname? id?
-
Windowsでログインする時に入力...
-
3dsのyoutubeにログインできな...
-
C# ボタンを押すとyahooのサイ...
-
Accessの画面更新を一時的に停...
-
最小化ボタン
-
メール添付されたPDFファイルが...
-
DVD-Rの「セッションを閉じる」...
-
formの送信ボタンをテキストに...
-
Ctrlキーを押しながらのダブル...
-
submitボタンの横幅を小さくし...
-
inputのtextとsubmitの高さがズ...
-
えきねっとのログイン画面はどこ?
-
VBAでこれってどういう意味でし...
-
HTTPリクエストヘッダーの設定...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
複数選択のListBoxでClickイベ...
-
ポストバック(__doPostback)へ...
-
C#でドラッグ&ドロップが機能し...
-
ポストバック時の画面スクロー...
-
【ASP2.0】TextBoxのフォーカス...
-
【ASP.NET】マスターページに配...
-
【VB6】 変数1 = 変数1 Or $H2
-
自作exeを常駐させるとPCがシャ...
-
[ASP.NET] ページ内でジャンプ。
-
Ctrl+vのイベントを解除
-
DragEnterイベントについて(VS...
-
リストビュー内でのドラッグ&...
-
slick.jsによるスライダー実装...
-
TreeViewの制御について
-
ドラッグドロップ(AllowDrop)に...
-
ASP.NET(VB)にてFormViewでの更...
-
aspxファイル実行時の表示順に...
-
コネクション・セッション・ト...
-
Accessの画面更新を一時的に停...
-
VBAで一時中断したプログラムの...
おすすめ情報