2013-07-10 2 views
3

이와 비슷한 질문에 대한 응답을 보았습니다. 그러나 ASP.NET을 처음 사용하기 때문에이 코드가 내가하고 싶은 것을 정확히 적용하지 못했습니다.codebehind에서 JavaScript 함수 호출

.aspx 페이지에 한 번 버튼을 누르면 해당 click 이벤트에서 내 MasterPage에있는 JavaScript 함수를 호출하여 모달 팝업을 표시하고 싶습니다.

click 이벤트가 modalpopup의 내용을 업데이트 할 수 있기를 바랍니다. modalpopup에 .aspx 레이블을 넣고 텍스트를 code-behind에서 설정하면됩니다. 현재이 팝업은 누군가가 "openModal"온 클릭 이벤트가있는 링크를 클릭 할 때 표시되는

<script> 
    // Demo modal 
    function openModal() { 
     $.modal({ 
      content: '<p>This is an example of modal window.</p>' + 
         '<p>Test text:</p>' + 
         '<ul class="simple-list with-icon">' + 
         ' <li>Sample Text</li>' + 
         '</ul>', 
      title: 'Example modal window', 
      maxWidth: 500, 
      buttons: { 
       'Open new modal': function (win) { openModal(); }, 
       'Close': function (win) { win.closeModal(); } 
      } 
     }); 
    } 
</script> 

: 여기

내 자바 스크립트 modalpopup 코드입니다. 그러나 .aspx 버튼이 포스트 백을 한 후에 어떻게 할 수 있습니까? 어떻게 동적으로 텍스트를 바꿀 수 있습니까?

내 MasterPage에서 modalpopup 기능을 사용하고 다른 페이지에서 필요한 메시지를 표시 할 수있는 콘텐츠로 채울 수 있기를 바랍니다.

는 또한이 어떤 응답이 페이지를 기반으로하는 경우, 포스트 백에서 수행되고 있음을 주목하고 싶었입니다 새로 고칠 수 없습니다 **

답변

3

C 번호를 :

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (IsPostBack) { 
     if ((Session("myButtonWasClicked") != null)) { 
      string content = "<p>This is an example of modal window.</p>"; 
      //make sure to escape any characters that need escaping 

      StringBuilder sb = new StringBuilder(); 
      sb.Append("<script type='text/javascript'>openModal('" + content + "');</script>"); 

      Page page = HttpContext.Current.CurrentHandler; 

      ClientScriptManager cs = page.ClientScript; 
      cs.RegisterClientScriptBlock(typeof(Reports), "modulFunction", sb.ToString, false); 

      Session("myButtonWasClicked") = null; 
     } 
    } 
} 

//Don't forget to assign this event to your button 
protected void btn_Click(object sender, EventArgs e) 
{ 
    Session("myButtonWasClicked") = 1; 
} 

VB.NET :. Reportsclass 또는 page 코드의 유형이

Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load 
    If IsPostBack Then 
     If Not IsNothing(Session("myButtonWasClicked")) Then 
      Dim content As String = "<p>This is an example of modal window.</p>" 'make sure to escape any characters that need escaping 

      Dim sb As New StringBuilder 
      sb.Append("<script type='text/javascript'>openModal('" + content + "');</script>") 

      Dim page As Page = HttpContext.Current.CurrentHandler 

      Dim cs As ClientScriptManager = page.ClientScript 
      cs.RegisterClientScriptBlock(GetType(Reports), "modulFunction", sb.ToString, False) 

      Session("myButtonWasClicked") = Nothing 
     End If 
    End If 
End Sub 

Protected Sub btn_Click(sender As Object, e As EventArgs) Handles btn.Click 
    Session("myButtonWasClicked") = 1 
End Sub 

가에

스크립트 :

<script> 
// Demo modal 
      function openModal(param) { 
       $.modal({ 
        content: param, 
        title: 'Example modal window', 
        maxWidth: 500, 
        buttons: { 
         'Open new modal': function (win) { openModal(); }, 
         'Close': function (win) { win.closeModal(); } 
        } 
       }); 
      } 
</script> 
+0

+1 정말 멋진데, 사용자는 C#의 맥락에서 묻고 있습니다. –

+1

예,주의를 기울이지 않았습니다. 지금 고쳐졌습니다. –

+0

감사합니다. 나는 이것을 시험해 보겠습니다! 그것을 바라 보면서 나는이 함수를 이런 방식으로 호출 할 수 있다고 말하고있는 것 같지만 모달의 내용을 보여줄 수있는 방법이 있습니까? 예를 들어, 자바 스크립트 함수에 .net 레이블을 포함시킬 수 있는지 확실하지 않았습니다. – Cineno28

2

같은 것을 시도해보십시오.

Response.Write("<script> openModal(); </script>"); 

또는를 이 페이지에 스크립트 관리자를 사용하는 경우 당신은이를 사용하여 시도 할 수 있습니다 :

System.Web.UI.ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "CallFunction", "openModal();", true); 
+0

I 아직도 새로운데. 그래서 나는 int를 분명히 볼 것이다. ScriptManager. 나는 내가 그렇게 부를 수 있다는 것을 몰랐다. 도움을 주셔서 감사합니다, 나는 이것을 시도 할 것입니다 – Cineno28