Comment obtenir la valeur de session asp.net dans la méthode jQuery?

Je souhaite accéder à une valeur de session dans la méthode jQuery dans la page de vue ASP.NET MVC. Voir le code ci-dessous,

$('input[type=text],select,input[type=checkbox],input[type=radio]').attr('disabled', ''); 

Comment puis-je obtenir la valeur de session dans jQuery.

 $('input,select').attr('disabled','<%=Session["CoBrowse"].ToString() %>'); 

Beaucoup de commentaires:

  1. Vous ne pouvez pas “Accéder à la session depuis jQuery”. Vous utilisez MVC et asp.net pour créer une page HTML (avec JavaScript). Session est un object côté serveur et JavaScript s’exécute côté client.
  2. Jetez un coup d’œil aux sélecteurs de jQuery . Ils ont des sélecteurs utiles comme :checkbox :text , etc.
  3. Votre code produit le code JavaScript que vous attendez: il comstack, exécute et produit du code JavaScript avec true ou false au bon endroit.
  4. Ce n’est pas le moyen de désactiver un élément. Si un élément a l’atsortingbut ‘disabled’, il sera désactivé, peu importe la valeur. est également une case à cocher désactivée, de sorte que vos contrôles sont toujours désactivés .
  5. Si tel est votre choix, considérez:

     var isCoBrowse = <%= Session["Name"].ToString().ToLower() %>; if(!isCoBrowse) //disable controls $(":text,:checkbox,:radio").attr("disabled","disabled"); //standard. 

    Cela produira le code JavaScript côté client:

     var isCoBrowse = true; 

    Et pour activer un élément:

     $("input").removeAttr("disabled"); 

En outre, il existe de bien meilleurs moyens pour y parvenir. Avez-vous envisagé de désactiver les contrôles côté serveur, si possible?

Vous n’êtes pas sûr qu’il s’agisse du meilleur itinéraire, mais au sein de votre page aspx, vous pouvez créer une méthode qui renvoie la valeur de votre variable de session, par exemple:

Du côté serveur:

 using System.Web.Services; [WebMethod(EnableSession = true)] public static ssortingng GetSession() { return Session["CoBrowse"].ToSsortingng(); } 

appelez ensuite cette méthode côté client en utilisant jQuery:

 $.ajax({ type: "POST", url: "./Default.aspx/GetSession", data: "{}", contentType: "application/json; charset=utf-8", dataType: "json", success: function(result){ ('input[type=text],select,input[type=checkbox],input[type=radio]').attr('disabled', result.d); } }); 
  var getSessionValue = $('#sessionInput').val(); 

Si cette variable de session est une donnée sensible (ce qui dans ce cas ce n’est probablement pas le cas), je n’utiliserais pas cette solution car elle montrerait les données de la session lorsque vous avez examiné la source javascript. S’il s’agit de données de session sensibles, il est probablement préférable d’y accéder via une méthode Web (voir la réponse ci-dessus).

Facile! quand tu sais comment:

@ Html.Encode (Session (“classificationTitle”))

… et dans le fichier .js:

 var classificationTitle = document.getElementById('classificationTitle').innerHTML; 

désolé – je ne peux pas publier l’intégralité du code HTML car ce site supprime les crochets 🙁