2009-09-16 8 views
1

J'essaye d'ajouter un peu de JQuery à un contrôle utilisateur ASP.Net pour vérifier si les cases à cocher ont été sélectionnées ou non. Il semble que les langages de script ne sont pas pris en charge directement dans les contrôles utilisateur, mais doivent être ajoutés via la méthode RegisterStartupScript(). J'ai trouvé un poste à cette URL décrivant ceci: http://www.codeproject.com/KB/aspnet/Javascript_in_Usercontrol.aspx. La publication indique que dans le fichier derrière le code, vous créez la syntaxe du code de script sous la forme d'une chaîne, puis l'envoyez en tant que paramètre à la méthode RegisterStartupScript(). Je rencontre des problèmes pour que cela fonctionne et j'espérais que quelqu'un connaîtrait un meilleur moyen d'ajouter un script à un contrôle utilisateur ASP.Net.JQuery dans le contrôle utilisateur ASP.Net dans C#

J'ai créé un échantillon simplifié et voici le balisage pour mon contrôle utilisateur:

<%@ Control Language="C#" ClassName="UC" AutoEventWireup="true" 
    CodeFile="UC.ascx.cs" Inherits="UserControls_UC" %> 

<span id="Licenses"></span> 

<script type="text/javascript"> 
    $(document).ready(function() { 
     var ctlID = $("span[id$='Licenses']"); 
     ctlID.text = "Testing"; 
    }); 
</script> 

Si j'inclure cette balise script dans le fichier ASPX contenant le contrôle de l'utilisateur, rien ne se passe. Si je ne l'inclue pas, j'obtiens une boîte de dialogue d'erreur JavaScript disant qu'il y avait une erreur d'exécution et qu'un objet était attendu.

+1

Pas sûr que ce soit 100% correct. Que se passe-t-il lorsque vous ajoutez le script directement à la vue html (design)? – mxmissile

+0

90% du temps est la fonction n'est pas juste dans mon code si rien ne se passe – sam

Répondre

1

Tout ce que vous devez faire est de laisser tomber un tag de script sur le contrôle.

<script type="text/javascript"> 
    $(function(){ 
     if ($('input:checkbox:checked').size() === 5) { 
      // Do Something 
     } 
    }); 
</script> 
-2

Je pense RegisterStartupScript() est la meilleure solution pour votre tâche. Pourquoi ça ne marche pas pour toi? Est-ce que vous utilisez la balise inline dans UserControl vous avez une chance d'avoir un désordre de Html & JavaScript bloque spaghetti, RegisterStartupScript() crée un seul bloc.

+4

Je n'ai jamais eu de problèmes avec les balises de script dans mes contrôles. – ChaosPandion

0

L'erreur que vous avez est parce que le $ n'est pas défini. Vous devez inclure la bibliothèque jQuery dans le contrôle utilisateur.

2

Si vous utilisez l'approche ci-dessus sans RegisterStartupScript(), vous rencontrerez un problème lorsque vous utiliserez usercontrol plusieurs fois dans une même page.

donc mieux suggéré moyen est de générer script sur le code-behind en utilisant RegisterStartupScript()

Questions connexes