2012-05-22 11 views
15

Qual è l'uso di window.external? È usato per chiamare le funzioni/i metodi lato server in C#/VB.NET (ASP.NET) da JavaScript? Puoi per favore indicarmi la giusta direzione?Qual è l'uso di window.external?

Grazie

Errore:

<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="WebForm1.aspx.vb" Inherits="WebApplication1.WebForm1" %> 

<!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> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
     <input type="button" name="button1" value="Click" onclick="javascript:window.external.SayHello('Mike');" /> 
    </div> 
    </form> 
</body> 
</html> 

Public Class WebForm1 
    Inherits System.Web.UI.Page 

    Public Sub SayHello(ByVal name As String) 
     Response.Write("Hello :- " & name) 
    End Sub 

End Class 

risposta

27

Questo è in gran parte preso da questo MSDN article ma window.external può essere utilizzato per consentire al WebBrowserControl per eseguire metodi pubblici del vostro client Windows Form.

Per esempio nel modulo si può avere una funzione come ad esempio:

public void HelloFromTheForm() 
{ 
    MessageBox.Show("Hi client, thanks for calling me!"); 
} 

E nel codice HTML caricata nel vostro WebBrowserControl si può avere un pulsante che assomiglia a:

<button onclick="window.external.HelloFromTheForm()"> 
    Say hi to the form 
</button> 

Quindi, in Riguardo alla tua domanda "È usato per chiamare le funzioni lato server?", il tuo modulo non è "lato server" ma ti permette di chiamare il codice C#/VB.NET del tuo modulo da una pagina web incorporata.

+0

<% @ Page Language = "VB" AutoEventWireup = "false" CodeBehind = "WebForm1.aspx.vb" Inherits = "WebApplication1.WebForm1" %>

user1054625

+0

Public Class WebForm1 Eredita System.Web.UI.Page secondario protettivo SayHello (nome ByVal As String) Response.Write ("Hello: -" & name) End Sub End Class – user1054625

+0

Errore. Per favore, fammi sapere perché? – user1054625

11

È una convenzione utilizzata da alcuni dei fornitori di browser/sistemi operativi per facilitare la comunicazione tra javascript in esecuzione all'interno del browser e codice in esecuzione "esterno" del browser sul dispositivo o sulla macchina dell'utente.

Ad esempio, se hai scritto un'applicazione nativa per Android o Windows Phone che ospita un controllo del browser web, il framework mobile nativo circostante potrebbe fornire window.external come modo per il javascript in esecuzione sulla pagina web all'interno del web controllo per richiamare la funzionalità del codice nativo della tua app. (Un esempio di come fare per Android può essere trovato qui: Listen to javascript function invocation from java - Android)

Se, d'altro canto, stai cercando di comunicare tra il javascript in esecuzione sul browser web dell'utente e il codice C# in esecuzione sul tuo server allora ti verrà voglia di investigare sulle chiamate in stile AJAX (che di solito ha ben poco a che fare con window.external). Esempi di configurazione di tali elementi sono disponibili sul sito ASP.Net. ad es. ! http://www.asp.net/web-forms/tutorials/aspnet-ajax/understanding-asp-net-ajax-web-services