2011-01-31 25 views
43

Ho scritto un javascript con una pagina asp.net.Come chiamare la funzione javascript da code-behind

in Asp.net Pagina

<HTML> <HEAD> 
    <script type="text/javascript"> 
     function Myfunction(){ 
      document.getElementId('MyText').value="hi"; 
     } 
     </script> 
</HEAD> <BODY> 
<input type="text" id="MyText" runat="server" /> </BODY> 

In Code-behind

Private Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) 
    Handles Me.Load 
     If Session("My")= "Hi" Then 
      I want to call "Myfunction" javascript function 
     End If 
End Sub 

Come posso fare?

+1

possibile duplicato di [Come chiamare la funzione javascript da code-behind] (http://stackoverflow.com/questions/4847819/how-to-call-javascript-function-from-code-behind) – outis

+2

fai davvero vuoi chiamare la funzione dal code-behind o vuoi che la funzione venga eseguita quando la pagina viene caricata? Penso che sia l'ultima alternativa che vuoi. –

risposta

34

Questo è un modo per richiamare uno o più metodi di script java dal codice sottostante. Usando Script Manager possiamo chiamare i metodi in sequenza. Prendi in considerazione l'esempio di seguito.

ScriptManager.RegisterStartupScript(this, typeof(Page), "UpdateMsg", 
    "$(document).ready(function(){EnableControls(); 
    alert('Overrides successfully Updated.');DisableControls();});", true); 

In questo primo metodo viene chiamato EnableControls(). Successivamente verrà visualizzato l'avviso. Successivamente verrà richiamato il metodo DisableControls().

63

Un modo per farlo è quello di utilizzare il ClientScriptManager:

Page.ClientScript.RegisterStartupScript(
    GetType(), 
    "MyKey", 
    "Myfunction();", 
    true); 
+0

Sembra il tuo migliore, ma cosa significa "MyKey"? –

+4

La chiave è solo un identificativo univoco per evitare di emettere lo stesso script due volte. Può essere qualsiasi cosa. – Jacob

12

C'è un modo molto semplice in cui si può fare questo. Implica l'iniezione di un codice javascript a un controllo etichetta dal codice sottostante. qui è il codice di esempio:

<head runat="server"> 
    <title>Calling javascript function from code behind example</title> 
     <script type="text/javascript"> 
      function showDialogue() { 
       alert("this dialogue has been invoked through codebehind."); 
      } 
     </script> 
</head> 

..........

lblJavaScript.Text = "<script type='text/javascript'>showDialogue();</script>"; 

Controllare il codice completo qui: http://softmate-technologies.com/javascript-from-CodeBehind.htm (morto)
link da Internet Archive: https://web.archive.org/web/20120608053720/http://softmate-technologies.com/javascript-from-CodeBehind.htm

+2

Sfortunatamente il collegamento è rotto :-( –

+0

Amare questa soluzione - mi sembra quasi di imbrogliare, sospetto che potrebbe non essere adatto a tutti gli scenari ma mi viene difficile pensare a un caso in cui non funzionerebbe. – cymorg

Problemi correlati