2009-07-10 14 views
1

J'ai plusieurs fonctions écrites en JS qui vérifient les erreurs sur mon site. Sur une instance, je veux désactiver deux des contrôles si une certaine instance dans la base de données est vraie.La meilleure façon de transmettre des variables C# à JS

J'ai quelque chose comme ça sur les aspx.cs

if (this.exemptcheck == true) { 
    // could set a variable to pass or whatever is optimal here 
} 

Puis, en JS J'ai une fonction comme ça dans mon .aspx

if (NotANumberCheck(item.GetMember("TotalSpace").Value, 'Space must be Numeric') == false) { return false; } 

Je ne veux pas que ce chèque à courir si this.examptcheck renvoie true. Quelle est la meilleure façon de le faire? J'ai entendu parler de mettre des variables dans des champs non visibles, mais cela ne semble pas idéal. Toute suggestion serait appréciée.

Merci

+0

Remarque: Il est généralement déconseillé de vérifier explicitement les valeurs booléennes pour être égal à vrai ou faux. Une valeur booléenne est déjà une valeur booléenne. Au moins en C# et JS, cela ne devrait pas poser de problème. – OregonGhost

Répondre

0

s'inscrire juste votre fonction js que si votre condition est vraie, vous n'avez pas besoin de vérifier une variable:

code C#:

if (this.exemptcheck == true) { 
    Page.ClientScript.RegisterStartupScript(Page.GetType(), "KEY", "/* code of your JS function that handle the true case */", true); 
} 
0

Vous pouvez écrire une section de script dans la page qui définit une variable à true/false puis vérifier cette variable dans la JS plus tard.

2

Dans l'aspx, définissez une variable membre appelée ExemptCheck. Plus tard, dans la JS, faites ceci:

var exemptCheck = <% Response.Write(ExemptCheck.ToString()) %>; 

Cela vous donnera une variable JS avec la même valeur que la variable C#.

+0

Je l'ai dans mon aspx.cs privé void pageSetup (EventArgs args) { Boolean insuCheck; if (dss.ExemptCheck == true) { exemptCheck = true; }} Je mets ce qui suit dans ma fonction JS OnInsert (item) {var exemptCheck = <% Response.Write (exemptCheck.ToString()); %>; } Cela me donne l'erreur suivante compilateur Message d'erreur: CS0103: Le nom « exemptCheck » n'existe pas dans le contexte actuel Est-ce un problème de portée ou que je fais quelque chose de mal? – Splashlin

+0

C'est un problème d'envergure. exemptCheck doit être une variable membre de l'ensemble de l'objet page, pas seulement la fonction pageSetup; le code entre les <% %> est exécuté pendant la fonction de rendu de page, longtemps après que votre fonction pageSetup a quitté. –

0

Vous pouvez Response.Write() le code javascript uniquement lorsque cette.examptcheck est vraie.

0

J'ai fini avec la commande suivante pour définir la valeur dans le code aspx.cs

Page.ClientScript.RegisterStartupScript (this.GetType(), "", "var stackedUnknownExemptCheck = true;", true);

Questions connexes