2016-01-30 5 views
0

У меня есть 2 страницы с именами, как: Abc.aspx и popupAbc.aspxфункция Javascript не получает вызов из кода позади, когда он помещается на главной странице

Сейчас на Abc.aspx у меня есть кнопки ниже по щелчку которого я открытие popupAbc.aspx в качестве всплывающего:

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

Код Behind:

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); 
     } 

Но в поджигатель консоли это бросает ошибку что ExitMyCurrentFancyBox не определен.

Когда я поставил эту функцию ExitMyCurrentFancyBox в моем popupAbc.aspx то он успешно звонить, но когда я положил это на моей главной странице, то он не звонит.

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

, потому что это не публичный метод. Вы можете создать какой-то общедоступный метод, который выполняет ваш javascript-код, и вызовет этот метод со своей дочерней страницы вместо этого. – Khazratbek

+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(); 
+0

Я просто хочу позвонить ExitMyCurrentFancyBox js вместо написания сценария –

+1

@Learning Я нашел, как исправить ваш код. Измените свой регистр на: * ScriptManager.RegisterStartupScript (Страница, GetType(), "js", "ExitMyCurrentFancyBox()", true); * и он будет работать. Также проверьте, что ваш javascript находится внутри главного тега главной страницы, внутри тегов