4

マスターページに関数があり、コードビハインドのコンテンツ ページから呼び出したい。

これは私の試みです:

ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "alert__", string.Format("setStatusBarMessage('{0}',{1});", barMessage, type, ""), true);

「setStatusBarMessage」関数は masterpage で宣言されているため、このコードは機能しません。

setStatusBarMessage はクライアント側の関数です。

マスターページ:

<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Content.master.cs" 

Inherits="F8.CRM.Pages.Content" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">

    <title></title>
    <asp:ContentPlaceHolder ID="head" runat="server">
    </asp:ContentPlaceHolder>
</head>
<body>
    <form id="form1" runat="server">
    <asp:ScriptManager runat="server" />
    <div>
        <asp:ContentPlaceHolder ID="MainContent" runat="server">
        </asp:ContentPlaceHolder>
    </div>
    </form>
</body>
</html>
<script type="text/javascript">


    function hello() {
        alert('hi mennan');
    }

</script>

コンテンツページ :

<%@ Page Title="" Language="C#" MasterPageFile="~/Pages/Content.Master" AutoEventWireup="true"
    CodeBehind="Departman.aspx.cs" Inherits="F8.CRM.Departman" %>

<%@ Register Src="~/Controls/Objects/StudioSideBox/StudioSideBox.ascx" TagName="StudioSideBox"
    TagPrefix="uc1" %>
<%@ Register Src="~/Controls/Objects/Baslik/Baslik.ascx" TagName="Baslik" TagPrefix="uc2" %>

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">

     my html...

    <script type="text/javascript">

       my script codes...


    </script>

</asp:Content>

このマスターページとコンテンツ ページは、iframe オブジェクトの下にあります。

4

5 に答える 5

5

次のコードを試してください

マスターページに機能があります

<script>
    function hello() {
        alert('hi');
    }

</script>

コンテンツページのページ読み込み中

 protected void Page_Load(object sender, EventArgs e)
{
    ScriptManager.RegisterStartupScript(this, this.GetType(), "ntmtch", "hello();", true);
}

それは働いています。コンテンツページには何も追加していません。

アップデート

マスターページのコード

<%@ Master Language="C#" AutoEventWireup="true" CodeFile="MasterPage.master.cs" Inherits="MasterPage" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script>
    function hello() {
        alert('hi');
    }

</script>
<asp:ContentPlaceHolder id="head" runat="server">

</asp:ContentPlaceHolder>
</head>
<body>
<form id="form1" runat="server">
<div>
    <asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server">

    </asp:ContentPlaceHolder>
</div>
</form>

最初のコンテンツ ページのコード

<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true"
CodeFile="Default.aspx.cs" Inherits="_Default" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
<iframe src="Default2.aspx"></iframe>
</asp:Content>

最初のコンテンツ ページの背後にあるコード:

 protected void Page_Load(object sender, EventArgs e)
{
    ScriptManager.RegisterStartupScript(this, this.GetType(), "ntmtch", "hello();", true);
}
于 2012-10-08T13:51:39.237 に答える
2

マスターページのサーバー側関数を呼び出すためにこれを試してください

    MasterPagename ms = Master as MasterPagename ;
    ms.FuctionOnMasterPage();

マスター ページでクライアント側関数を呼び出そうとすると、マスター ページとコンテンツ ページ関数が同じ HTML ページにレンダリングされるため、直接呼び出すことができると思います。

于 2012-10-08T13:41:42.750 に答える
0

通常、私はそうします:

<asp:Literal ID="ScriptLit" runat="server" />


コードビハインド:

ScriptLit.Text = "<script>functionName();</script>"
于 2012-10-08T13:51:32.587 に答える
0

ここでマスター ページ クラスのオブジェクトを作成し、MasterPage 関数を呼び出すことができます。

 MasterPageClassName MyMasterPage = (MasterPageClassName)Page.Master;

 MyMasterPage.Functionname();

それは間違いなくあなたを助けます。それを試してみてください

于 2012-10-08T13:52:50.500 に答える
-2

Label lbl = (Label)this.Master.FindControl("lblBalance"); lbl.Text = "こんにちは";

于 2014-05-09T14:08:03.407 に答える