如何在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() %>');
很多评论:
- 你不能“从jQuery访问会话”。 您使用MVC和asp.net来创建HTML页面(使用JavaScript)。 Session是服务器端对象,JavaScript在客户端运行。
- 看看jQuery的选择器 。 它们有很多有用的选择器,例如
:checkbox
,:text
等。 - 您的代码生成您期望的JavaScript:它在正确的位置编译,运行并生成带有
true
或false
JavaScript。 - 这不是禁用元素的方法。 如果元素具有“禁用”属性,则无论该值如何,它都将被禁用。
也是一个禁用的复选框,因此始终禁用您的控件 。
-
如果这是您选择的方式,请考虑:
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,因为这个网站剥离尖括号:(