6
votes

Lecture C # Propriété dans le code JQuery

J'essaie de lire la valeur d'une propriété C # de mon code derrière le fichier dans un script JQuery (voir ci-dessous). Le sélecteur JQuery J'ai écrit un accès ASP.NET GridView, puis une case à cocher dans le réseau GridView. Chaque fois qu'une case à cocher est cochée ou non cochée, le code est touché, mais j'ai besoin d'accéder à la propriété C # à partir du code derrière pour prendre les mesures appropriées en fonction de la valeur de la propriété.

    $(".AspNet-GridView-Normal > td > input").click(function() {

        //Need to access the C# property here

        //Take action here based on the value of the C# property

     });


4 commentaires

Je l'ai fait dans des rails. Les rails vous permettent d'envoyer des réponses JavaScript aux demandes Ajax - qui sont ensuite exécutées clients une fois que cela est reçu. Cependant, le code qui génère ce JavaScript pourrait avoir des instructions rubis intégrées arbitraires (par exemple, comme l'accès à un attribut pour déterminer la production). Vous pouvez rechercher si ASP.NET soutient quelque chose comme ça. La propriété C # n'existe que sur le côté serveur de sorte que cette logique doit être effectuée via le traitement latéral du serveur.


Aurez-vous besoin de modifier la valeur sous forme de cases à cocher? Donc, si vous démarrez avec la disponibilité de la version disponible sur 10, vous aurez-vous besoin d'incrémenter / de décrémenter la variable sous forme de cases à cocher?


Oui, la variable devra être décrémentée chaque fois qu'une case à cocher est cochée et incrémentée chaque fois qu'une case à cocher est cochée non vérifiée.


Eh bien, dans cette affaire, la solution présentée par Crescent Froud et actualisée par Ben Duguid est probablement l'approche la plus simple. Vous pouvez le combiner avec mon approche si vous avez besoin d'obtenir la valeur actuelle de la variable disponible de la page sur la page. Donc essentiellement à jour continuellement la valeur du champ masqué afin que la valeur soit disponible sur le post-plan.


7 Réponses :


1
votes

Eh bien, vous ne pouvez pas.

Vous devez rendre la propriété C # dans certains éléments (peut-être un champ caché), puis le regarder de cette façon.

Mais expliquez-vous plus loin: quelle propriété essayez-vous de vérifier?


2 commentaires

La propriété est juste un INT dans le code derrière, comme celui-ci: le public INT est disponible {obtenir; ensemble; }


À droite, bien le faites le champ de champ caché. Mark Kanof vous a donné le code exact pour le faire.



12
votes

Cela indique peut-être l'évidence, mais le code derrière n'existe pas du côté du client où votre code JQuery est exécuté. Ce que vous pourriez faire est d'attribuer la valeur de la propriété à un champ masqué sur le côté serveur de sorte que lorsque vous devez le vérifier avec JQuery du côté client, il sera disponible. Donc, vous pouvez effectuer ce qui suit sur le côté du client.

balisage: p> xxx pré>

code derrière: p> xxx pré>

jQuery : P>

$("#<%= hfValueINeedToKnow.ClientID %>").val();


3 commentaires

Je rencontre des problèmes de lecture de la valeur de Hiddenfield, voici le code JQuery que j'utilise pour y accéder: Var disponible: $ ("# <% = hfavailableInstalls.Clientid%>"). Val (); Et je définit la valeur du champ masqué sur "2" dans la méthode de pageload dans le code derrière, mais j'ai toujours une valeur de "indéfini" pour le VAR disponible lorsque je marche en mode de débogage. Des idées ce qui peut causer cela?


@Russ Clark - Qu'est-ce qui apparaît dans votre HTML pour le champ d'entrée caché et la valeur rendue réelle dans le sélecteur de jQuery?


Au point, vraiment utile. Merci. Cherché cette pause des actions pendant un moment.



0
votes

Ce que j'ai fait pour ce scénario dans le passé consiste à imprimer ma valeur de code dans le balisage et à stocker tout ce qu'il est dans une variable JavaScript, en effectuant une copie à la disposition du code côté client. C'est un exemple idiot, mais j'espère que cela a du sens: xxx


0 commentaires

2
votes

Vous avez mentionné dans un commentaire que la valeur est une int. Et je vois que c'est aussi un propriété publique code> dans votre codeBeHind. Ceci est trivial maintenant - vous n'avez pas besoin d'échapper à la valeur, ni d'y accéder de manière à un chemin, et vous obtenez une sécurité de type gratuitement:

<script>
$(".AspNet-GridView-Normal > td > input").click(function() {

    var AvailableInstalls = <%= AvailableInstalls %>;

});
</script>


1 commentaires

Sur la base du commentaire ultérieur de l'OP ", la variable devra être décrémentée chaque fois qu'une case à cocher est cochée et incrémentée chaque fois qu'une case à cocher est non vérifiée" déclarer la variable JS en dehors de la fonction, mais cela devrait fonctionner bien.



0
votes

Il n'y a pas de moyen très propre de le faire. Votre meilleur pari serait probablement d'utiliser la fonctionnalité clientscript.registerclientscript.registerclientscript.registrierclientscriptBlock code> intégré à ASP.NET. Voici une bonne amorce .

private int myValue;

protected void Page_Load(object sender, EventArgs e) {
    ClientScript.RegisterClientScriptBlock(typeof(Page), 
        "vars", "<script>var myParams = { p1: " + myValue + ", p2: 'My Name' };</script>");
}


0 commentaires

0
votes

ASP intégré à JavaScript me rend toujours nerveux du point de vue des attaques d'injection de script et de l'incapacité à tester votre javascript.

Cette construction sur une réponse d'une ealier: P>

<input type="hidden" id="#MyHidden" value="<%= AvailableInstalls %>" />


0 commentaires

0
votes

Si vous mettrez votre valeur dans un ASP: Hiddenfield avec ID HFValueineDtoknow, le moyen le plus simple de récupérer ce côté client de valeur est xxx

afin que vous puissiez également placer ce code dans une séparation séparée. js fichier.


0 commentaires