【问题标题】:Managing ASP.Net Session on HTML Page using JSON?使用 JSON 在 HTML 页面上管理 ASP.Net 会话?
【发布时间】:2012-01-25 10:05:29
【问题描述】:

从 aspx 页面成功登录到 html 页面后,会话正在传递,我希望能够使用 JSON 获取会话对象并修改 html 元素,任何人都可以发布一个关于如何使用 JSON 执行此操作的简单示例?

谢谢。

【问题讨论】:

  • 您能否详细说明您的要求,甚至可以添加一个代码 sn-p 来说明您的外观?
  • 让我试着改写你的问题。您想使用 JavaScript 在客户端将所有用户会话变量序列化为 JSON 吗?

标签: c# asp.net json session webforms


【解决方案1】:

您需要从客户端向 Web 服务方法或页面方法(在您的页面中定义的 Web 方法)进行 AJAX 调用。

如果您选择页面方法选项,您的代码可能是这样的:

Page.aspx 背后的代码

    public class CustomSessionObject
    {
        public string Name { get; set; }
    }

    [WebMethod]
    public static object GetSessionData()
    {
        try
        {
            return HttpContext.Current.Session["THE_SESSION_VAR_YOU_NEED"] as CustomSessionObject;
        }
        catch (Exception e)
        {
           //Log Exception

            throw;
        }
    }

我不建议总是归还所有会话变量。让它明确,只回馈你需要的。这样,如果稍后其他开发人员添加了更多用户会话变量,它们也不会被返回。如果这样做,将来可能会出现安全漏洞。

使用 JQuery 进行 AJAX 调用。

var handleError = function(jqXHR, textStatus, errorThrown) {
    alert("An error occurred: " + jqXHR.responseText);
};

var handleSuccess = function(data, textStatus, jqXHR) {
    if (data && data.d) {
        alert(data.d.Name);
    }
};

$.ajax({
    url: 'Page.aspx/GetSessionData',
    type: "POST",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: handleSuccess,
    error: handleErr
});

另请阅读this 了解更多信息。

【讨论】:

    【解决方案2】:

    Session 对象通常是服务器端的,使用存储在客户端 cookie 中的会话密钥进行引用。

    另外,JSON 是一种数据传输格式,因此它并没有真正做任何事情。也许你的意思是 jQuery?

    如果您希望能够在客户端和服务器上修改它,您需要客户端 cookie。阅读此概述:http://msdn.microsoft.com/en-us/library/ie/ms178194.aspx

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-16
      相关资源
      最近更新 更多