在客户端设置会话和查看状态,并在页面重新加载后使用ASP.net 4.5中服务器端的值

时间:2015-03-02 01:05:05

标签: asp.net session client-side server-side viewstate

在Asp.Net Pages中,我希望会话或视图状态(或其他任何东西)在刷新页面后保留该值?可能吗? 我想使用jQuery或javaScript在ClientSide中设置它们。 我无法在网上找到任何完整的答案

更新 其中一个答案是这样的:

这是用于设置会话的$ .ajax调用

function setSession(dayrange, startDate, endDate) {
        var d = "{dayrange: '" + dayrange + "',startDate: '" + startDate + "',endDate:'" + endDate + " }";
        $.ajax({
            type: "POST",
            url: "dateTimePicker.aspx/SetSession",
            data: d,
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (msg) {
                //alert(msg.d);
                if (msg.d == "Success") {
                    alert("set ");
                    location.href = "dateTimePicker.aspx";
                }
            },
            failure: function (response) {
                alert(response.d);
            }
        });
    }

这是服务器端的代码:

  [WebMethod(EnableSession = true)]
    public static void SetSession(string dayrange, string startDate, string endDate)
    {
        HttpContext.Current.Session["dayrange"] = dayrange;
        HttpContext.Current.Session["startDate"] = startDate;
        HttpContext.Current.Session["endDate"] = endDate;
    }

这段代码的问题是什么?因为它没有进入server_side方法(SetSession)

2 个答案:

答案 0 :(得分:0)

像这样更改您的数据

var d=JSON.stringify({dayrange:dayrange,startDate:startDate,endDate:endDate});
data:d

有一种格式可以将数据传递给ajax调用。参数的名称和值应该是单引号,例如'dayrange':'dayrangeValue',但是如果你按照上面的方式对数据进行字符串化,则不需要这样做。

答案 1 :(得分:0)

稍微更改数据,如下所示

data:"{'dayrange': '" + dayrange + "','startDate': '" + startDate + "','endDate':'" + endDate + "' }",