※こちらの派生です。
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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
歩いた自慢大会
「めちゃくちゃ歩いたエピソード」を教えてください。 長時間でも長距離でも結構です。
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
【ASP.NET】フォームの継承は出来ますか?
Microsoft ASP
-
マスターページからコンテンツページのメソッドを実行したい
Microsoft ASP
-
【C#】Page_Loadさせない方法について
その他(プログラミング・Web制作)
-
-
4
ASP.NETでのランタイムエラー?について
Microsoft ASP
-
5
GridViewにバインドせずにデータを表示する方法
Microsoft ASP
-
6
Webページ上のボタン等の位置を移動したい。
Microsoft ASP
-
7
ASP.NET(VB)VBソースからJavascriptの関数を呼ぶには
Microsoft ASP
-
8
ASP.NetのGridViewで任意の行クリックで選択を行う方法
Microsoft ASP
-
9
Page_Load時にボタンクリックイベントを実行するには?
Microsoft ASP
-
10
ASP.NETのコントロールの値をJavaScriptで取得
JavaScript
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
複数選択のListBoxでClickイベ...
-
ポストバック時の画面スクロー...
-
[ASP.NET] ページ内でジャンプ。
-
treeview展開イベント(VS2010C++)
-
【ASP2.0】TextBoxのフォーカス...
-
【VB6】 変数1 = 変数1 Or $H2
-
Ctrl+vのイベントを解除
-
【ASP.NET】マスターページに配...
-
コネクション・セッション・ト...
-
DataGridViewのチェックボック...
-
ACCESS2010 WEBブラウザーコン...
-
ASP.net MVC セッションハイジ...
-
システム開発の工数と費用について
-
ログインフラグがわかりません。
-
画面遷移が不正ですと表示されます
-
同じソリューション内の別のプ...
-
Accessの画面更新を一時的に停...
-
特定の端末からのみWebシステム...
-
SPREADでカーソルの位置を1行目...
-
asp.NET初心者です。「 ’Contex...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
複数選択のListBoxでClickイベ...
-
【ASP2.0】TextBoxのフォーカス...
-
【ASP.NET】マスターページに配...
-
C#でドラッグ&ドロップが機能し...
-
ポストバック時の画面スクロー...
-
【VB6】 変数1 = 変数1 Or $H2
-
ドラッグドロップ(AllowDrop)に...
-
Ctrl+vのイベントを解除
-
[ASP.NET] ページ内でジャンプ。
-
VBのタイマーイベントについて
-
リストビュー内でのドラッグ&...
-
DragEnterイベントについて(VS...
-
ExcelVBAでのユーザーフォーム...
-
ポストバック(__doPostback)へ...
-
aspxファイル実行時の表示順に...
-
slick.jsによるスライダー実装...
-
ページ切り替え時の動作 (Page...
-
コネクション・セッション・ト...
-
Accessの画面更新を一時的に停...
-
aspxをhtmlに変換する方法について
おすすめ情報