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

时间:2009-05-13 07:30:08

标签: c# asp.net jquery asp.net-mvc

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

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

如何在jquery中获取Session值。

6 个答案:

答案 0 :(得分:18)

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

答案 1 :(得分:8)

不确定这是否是最佳路线,但在您的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);
    }
});

答案 2 :(得分:8)

很多评论:

  1. 你不能“从jQuery访问会话”。您使用MVC和asp.net来创建HTML页面(使用JavaScript)。 Session是服务器端对象,JavaScript在客户端运行。
  2. 看看jQuery's selectors。他们有有用的选择器,如:checkbox:text
  3. 您的代码生成您期望的JavaScript:它在正确的位置编译,运行并生成truefalse的JavaScript。
  4. 这不是禁用元素的方法。如果元素具有“禁用”属性,则无论该值如何,它都将被禁用。 <input type="checkbox" disabled="false" />也是一个已禁用的复选框,因此您的控件始终处于停用状态
  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");
    
  6. 此外,有更好的方法来实现这一目标。您是否考虑过尽可能禁用服务器端的控件?

答案 3 :(得分:6)

<input id="sessionInput" type="hidden" value='<%= Session["name"] %>' />

var getSessionValue = $('#sessionInput').val();

答案 4 :(得分:1)

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

答案 5 :(得分:-1)

轻松!当你知道如何:

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

...并在.js文件中:

var classificationTitle = document.getElementById('classificationTitle').innerHTML;
抱歉 - 由于此网站删除尖括号,我无法发布完整的HTML :(