如何在jquery方法中获取asp.net会话值?

我想在ASP.NET MVC视图页面中的jquery方法中访问Session值。 见下面的代码,

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

如何在jquery中获取Session值。

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

很多评论:

  1. 你不能“从jQuery访问会话”。 您使用MVC和asp.net来创建HTML页面(使用JavaScript)。 Session是服务器端对象,JavaScript在客户端运行。
  2. 看看jQuery的选择器 。 它们有很多有用的选择器,例如:checkbox:text等。
  3. 您的代码生成您期望的JavaScript:它在正确的位置编译,运行并生成带有truefalse JavaScript。
  4. 这不是禁用元素的方法。 如果元素具有“禁用”属性,则无论该值如何,它都将被禁用。 也是一个禁用的复选框,因此始终禁用您的控件
  5. 如果这是您选择的方式,请考虑:

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

    这将生成客户端JavaScript代码:

     var isCoBrowse = true; 

    并且,要启用元素:

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

此外,有更好的方法来实现这一目标。 您是否考虑过禁用服务器端的控件?

不确定这是否是最佳路由,但在您的aspx页面中,您可以创建一个返回会话变量值的方法,例如

服务器端:

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

然后使用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(); 

如果该Session变量是敏感数据(在这种情况下可能不是),我不会使用此解决方案,因为当您查看javascript源时它会显示Session数据。 如果它是敏感的会话数据,那么通过Web方法访问它(参见上面的答案)可能是最好的。

简单! 当你知道如何:

@了Html.Encode(会话( “classificationTitle”))

…并在.js文件中:

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

对不起 – 我无法发布完整的HTML,因为这个网站剥离尖括号:(