2010-10-13 6 views
0

Je veux savoir comment puis-je utiliser une variable C# en javascript?en utilisant C# variable en javascript

+4

S'il vous plaît expliquer plus –

+2

double possible de [Lire la propriété C# en code JQuery] (http://stackoverflow.com/questions/1300128/reading -c-property-into-jquery-code) –

Répondre

6

Si je comprends votre intention, essayez dans votre page ASPX

<script type="text/javascript"> 
<!-- 
function showCSharpVar() { 
    alert('<%= myCSharpVariable %>'); 
} 
--> 
</script> 

où myCSharpVariable est une variable publique déclarée dans le code-behind comme celui-ci

public string myCSharpVariable = "display me"; 

vous pouvez aussi faire un propriété publique sur la page si vous avez besoin d'accomplir quelque chose de plus impliqué.

Une autre option consiste à intégrer un script directement dans votre page en utilisant RegisterClientScriptBlock() ou RegisterStartupScript(). Ce sont les critères que j'utilise pour décider lequel est le meilleur pour la situation. Avec cette méthode

//A. 
// Page.RegisterClientScriptBlock() will insert the *block* of script just after <form>. 
// Page.RegisterStartupScript() will insert the script at end of <form>. 
//B. 
// Page.RegisterClientScriptBlock() should usually be used for scripts encapsulated in functions. (hence the word "block") 
// Page.RegisterStartupScript() can be used for any script, even if it's not in a function. 
//C. 
// Page.RegisterClientScriptBlock() should be used for functions that don't need to run on Page load. 
// Page.RegisterStartupScript() should be used for scripts that must run on Page Load. 
//D. 
// Page.RegisterClientScriptBlock() should be used for a script that does not require the form elements to have been created. 
// Page.RegisterStartupScript() should be used for scripts that require the form elements to have been created and uses references to them. 
// 

, vous pouvez injecter un code JavaScript dans la page (par exemple, le tableau vous a demandé dans le commentaire), mais il fait souvent du mal à suivre les bogues et vous ne serez pas en mesure de test unitaire .

Si vous utilisez UpdatePanels, vous devrez peut-être utiliser l'un ou l'autre selon qu'il s'agit d'une publication complète ou partielle. Essayez ceci pour contourner le problème

if (ScriptManager.GetCurrent(referenceControl.Page).IsInAsyncPostBack) 
{ 

    ScriptManager.RegisterClientScriptBlock(referenceControl, referenceControl.GetType(), "uniqueID", 
     "Your Script Here", true); 
} 
else 
{ 
    ScriptManager.RegisterStartupScript(referenceControl, referenceControl.GetType(), "uniqueID", 
     "Your Script Here", true); 
} 
+0

Cela ne nécessite-t-il pas également que la page elle-même soit liée au code derrière l'instance de classe? – Justin

+0

ok merci beaucoup, mais 1 autre question c'est pour la variable mais comment puis-je utiliser le tableau en elle ... – user471987

+0

@Kragen. Je crois que tu as raison. Ce n'est pas idéal, mais c'est le moyen le plus propre que je connaisse pour franchir les limites de l'application. – Laramie

3
<script type="text/javascript"> 

function GetValue() { 
var myJsVar = "<%= anyC#Variable %>"; 

// vous effectuez des opérations désiré. Mais rappelez-vous que le spécificateur d'accès de la variable "anyC# Variable" doit être supérieur à private. vous pouvez prendre "protégé" ou "public" mais pas privé.

0

C#:

ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "temp", "<script language='javascript'>alert(" + abc + ");</script>", false) 

VB:

ScriptManager.RegisterStartupScript(Me.Page, Me.GetType(), "temp", "<script language='javascript'>alert(" + abc + ");</script>", False)