2017-04-21 1 views
0

In meinen Spielen vb.net, ich bin eine Schaltfläche dynamisch wie folgt zu erstellen:Aktualisierung JavaScript-Variable nach .NET partiellen Postbacks

Dim nextButton As New ImageButton 

With nextButton 
    .ID = "nextButton" & directionID.ToString 
    AddHandler .Click, AddressOf directionPath_Click 
End With 

im Spiel, wenn die Schaltfläche geklickt wird, feuert sie und aktualisiert eine Variable namens directionPath.

Dieser Teil funktioniert einwandfrei, wenn ich den Visual Studio-Debugger durchlaufe.

Wie auch immer ich eine Variable clientside in Javascript aktualisieren muss, die den Wert von DirectionPath verwendet.

Immer wenn ich auf den Knopf klicke, erhält der Javascript Teil nicht den aktualisierten Wert.

Ich lese auf teilweise Postbacks und versuchte eine Menge Dinge, aber nichts funktioniert.

Ist das überhaupt möglich?

danke!

+1

Sie versuchen die Server-Seite-Handler über Javascript zu ändern? Wie wäre es stattdessen mit den Kriterien, die das Javascript verwenden würde, um das mit dem Post zu ändern und dort im Server-Code zu verzweigen? Klingt eine Million Mal leichter für mich. – asawyer

+0

@asawyer nein Ich muss nur die Servervariable abrufen, wenn sie mit dem onclick -Ereignis aktualisiert wird. danke – SkyeBoniwell

+1

Sie könnten versuchen, ein Startskript in 'directionPath_Click 'zu registrieren, das die Variable setzt. Ich denke, die Syntax ist etwas wie 'ScriptManager.RegisterStartupScript (Me, Me.GetType()," MyScriptKey "," myjsvar = '"& myservervar.ToString() & "';", True). Der 4. Parameter ist das JavaScript zu sein renne nach dem Postback .. – Mark

Antwort

1

Server-seitiger Code kann JavaScript-Code registrieren, der nach einem Postback mit der Klasse ScriptManager auf dem Client ausgeführt wird. Es gibt eine Reihe von RegisterXXX Methoden zur Verfügung, und ich war nie ganz sicher, welche in welcher Situation zu verwenden, aber ich habe RegisterStartupScript erfolgreich verwendet (obwohl auch das ist verwirrend, ob in der Seite oder einige Kontrolle übergeben - z. B. der UpdatePanel als der erste Parameter).

So können Sie ein wenig experimentieren müssen, aber in Ihrem directionPath_Click Methode so etwas wie dies versuchen:

ScriptManager.RegisterStartupScript(
    Me, ' The page 
    Me.GetType(), ' The type for the page class 
    "MyScriptKey", ' A unique identifier for the script 
    "myjsvar = '" & myservervar.ToString() & "';", ' The JavaScript to run 
    True ' Add <script> tags around the code 
) 
Verwandte Themen