当Javascript函数放在母版页上时,它不会从代码中调用

时间:2016-01-30 06:46:14

标签: javascript c# asp.net updatepanel scriptmanager

我有两个页面命名为: Abc.aspx和popupAbc.aspx

现在在 Abc.aspx 我点击下面的按钮,我正在弹出 popupAbc.aspx

<asp:Button ID="btnOpenChildAbcPopup" runat="server" Text="Open" UseSubmitBehavior="false" CausesValidation="False" OnClick="btnOpenChildAbcPopup_Click" />

代码背后:

protected void btnOpenChildAbcPopup_Click(object sender, EventArgs e)
        {
            string url="../popupAbc.aspx";
            ScriptManager.RegisterStartupScript(Page, GetType(), "alert", "OpenChildAbcPopup('" + url + "');",
                    true);
        }

function OpenChildAbcPopup(url) {
                    $.fancybox({
                        'onStart ': function () { $.fancybox.hideActivit() },
                        'onComplete': function () { $.fancybox.hideActivity() },
                        'titleShow': 'true',
                        'titlePosition': 'over',
                        'titleFormat': 'formatTitle',
                        'href': url,//popupAbc.aspx
                        'type': 'iframe',
                        'width': '1000',
                        'height': '500',
                        'fitToView': false,
                        'autoSize': false,
                        'hideOnOverlayClick': false,
                        'hideOnContentClick': false,
                        'overlayOpacity': 0.7,
                        'enableEscapeButton': false,
                        'closeEffect': 'none' 
                    });
                    $.fancybox.hideLoading();
                    return false;
                }

到目前为止,每件事都能完美运行,点击按钮,我的popupAbc.aspx会在弹出框中完美打开,但问题出现在popupAbc.aspx

我在popupAbc.aspx中有一个按钮,我将保存一些数据,保存数据后我想再次调用 javascript函数在主页上,但是javascript函数没有调用。

这是我的页面: popupAbc.aspx

  <%@ Page Language="C#" AutoEventWireup="true" MasterPageFile="~/MyMaster.Master" CodeBehind="popupAbc.aspx.cs" Inherits="popupAbc.aspx" %>

<asp:Button ID="btnSubmit" runat="server" Text="Save" OnClick="btnSubmit_Click" UseSubmitBehavior="true"  ValidationGroup="p1" />

 protected void btnSubmit_Click(object sender, EventArgs e)
        {
            //code for saving form data in database and after that call javascript function which
            //is on MyMaster page
            ScriptManager.RegisterStartupScript(Page, GetType(), "Js", "ExitMyCurrentFancyBox();", true);
        }

但是在firebug控制台中,抛出错误 ExitMyCurrentFancyBox未定义

当我在我的popupAbc.aspx中放置 ExitMyCurrentFancyBox 函数时,它正在成功调用,但是当我把它放在我的母版页上时,它就没有调用。

function ExitMyCurrentFancyBox() {
                alert()
            }

注意我的Abc.aspx 使用update panel popupAbc.aspx 并不使用update panel

当我把它放在母版页上以及如何在母版页上调用时,有人能告诉我为什么Javascript函数没有调用吗?

我已经尝试了所有这些,但下面的任何一个都不起作用:

 // ScriptManager.RegisterStartupScript(Page, GetType(), "alert", "ExitMyCurrentFancyBox();", true);
               // ScriptManager.RegisterStartupScript(Page, GetType(), "alert", "ExitMyCurrentFancyBox();", true);
                //ClientScript.RegisterClientScriptBlock(GetType(), "sas", "CloseFancyboxtl();", true);
              //  ScriptManager.RegisterStartupScript(this, this.GetType(), "ntmtch", "ExitMyCurrentFancyBox();", true);
          //  ScriptManager.RegisterStartupScript(Page, Page.GetType(), "msg", "ExitMyCurrentFancyBox();", true);
            //ScriptManager.RegisterStartupScript(this, this.GetType(), "msg", "ExitMyCurrentFancyBox;", true);
            ScriptManager.RegisterClientScriptBlock(this.Page, GetType(), Guid.NewGuid().ToString(), "ExitMyCurrentFancyBox();", true);

1 个答案:

答案 0 :(得分:1)

根据您的要求发布可能的解决方案。

将下一个方法添加到您的MasterPage:

public void ShowMyJavascript(){
    Response.Write("<script language='javascript'>alert('Here is my message to be displayed as an alert');</script>");
}

在您的内容页面中:

this.Master.ShowMyJavascript();