プロが教える店舗&オフィスのセキュリティ対策術

お世話になります。
マスターページからコンテンツページのメソッドを実行したいです。
よろしくおねがいします。


**********************************
マスタページ:Site1
**********************************
[Site1.Master]
<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site1.master.cs" Inherits="Site1" %>

<asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
</asp:ContentPlaceHolder>


[Site1.Master.cs]
public partial class Site1 : System.Web.UI.MasterPage
{

ここで、コンテンツページのメソッドを実行

}


**********************************
コンテンツページ:WebForm1
**********************************
[WebForm1.aspx]
<%@ Page Language="C#" MasterPageFile="Site1.Master" Codebehind="WebForm1.aspx.cs" Inherits="WebForm1" %>

<asp:Content ID="Content1" runat="server" ContentPlaceHolderID="ContentPlaceHolder1">
</asp:Content>


[WebForm1.aspx.cs]
public partial class WebForm1 : System.Web.UI.Page
{
 protected void Page_Load(object sender, EventArgs e)
 {
 }

 //このメソッドをマスターページで実行したい
 public string メソッド()
 {
  return "XXXXXXX";
 }

}

A 回答 (1件)

----------


※単純解答
----------
public partial class Site1 : System.Web.UI.MasterPage
{
  protected void Page_Load(object sender, EventArgs e)
  {
    TextBox l_txt = new TextBox();
    l_txt.Text = this.呼出();
    this.Page.Form.Controls.Add(l_txt);
  }

  private string 呼出()
  {
    WebForm1 l_frm = (WebForm1)this.Page;
    return l_frm.メソッド();
  }
}


----------
※別解
----------
マスタを利用するってことは、埋め込むフォームが変わるはずです。

埋め込まれるフォームはベースクラスを利用した作りにして、マスタからのメソッド呼び出しはベースクラスのメソッドを呼ぶと、スマートな作りになると思います。

[childpage.cs]をプロジェクトに新規追加
public class childpage : System.Web.UI.Page
{
  //継承可能なメソッド1
  public virtual string メソッド()
  {
    return "未設定";
  }

  //継承可能なメソッド2
  public virtual string メソッド2()
  {
    return "親です";
  }
}

[WebForm1.aspx.cs]を改造
public partial class WebForm1 : childpage
{
  // このメソッドを省略すると、ベースのメソッドを実行する
  public override string メソッド()
  {
    return "XXXXXXX";
  }

  // おまけ
  public override string メソッド2()
  {
    //親のメソッド2との合わせ技
    return String.Format("親を呼ぶと【{0}】が返る", base.メソッド2());
  }
}

[Site1.Master.cs]も改造 (単純解答を改造)
private string 呼出()
{
  childpage l_frm = (childpage)this.Page;
  return l_frm.メソッド();
}
    • good
    • 0
この回答へのお礼

私が尋ねた質問は『※単純解答』で解決することが出来ました。
が、『※別解』を見て目からうろこの状態です。
まさに、私がやらなければいけない解答がここに書かれていました。
1050YEN様ほんとうにありがとうございました。
解決の糸口がはっきりと見えました。

お礼日時:2010/04/16 16:59

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!