如何将会话参数从jquery传递到ASHX处理程序

时间:2011-10-03 13:55:09

标签: c# jquery asp.net

下面是我的Jquery代码,我想传递Session paramater,例如会话[ “ID”]。 Jquery调用ASHX页面

以下所有参数都正常工作且session参数有值,但是如何从Jquery传递会话参数?

所以下面的代码“paramater Sessionparameter”应该替换为Session [“ID”]或类似的东西。我怎么能这样做?

请咨询?

   $('input[name$=btnTab1Save]').click(
             function (e) {
                 // debugger;
                 // AJAX call to the handler
                 $.post(
                    'Consulting.ashx',
                 // data to the handler in the form of QueryString
                    {
                    tab: 'tab1',
                    // id is the second column within the row
                    Ilac_id: prevRow.find('td:eq(0)').text(),
                    ID: SESSION_PARAMATER,
                    begindate: $('input[name$=begindate]').val(),
                    weigth: $('input[name$=weigth]').val(),
                    continue: true,
                    freq: $('input[name$=freq]').val(),
                    reason: $('input[name*=radListreason]:checked').val(),
                    freq2: $('input[name$=radListfreq2]:checked').val(),
                    freetext: $('input[name$=freetext]').val()
                },
                 // callback function
                 // data is the JSON object
                    function (data) {
                        if (data.Success) {
                            // close the tab
                        }
                    },
                    "json"
                );
             });

我可以读取我的参数,如Convert.Toint(context.Request.Form [“ID”]));

 data.weigth = Convert.ToInt32(context.Request.Form["weigth"]);

我试过了'<%= Session["ID"] .ToString() %>',但它没有用......

3 个答案:

答案 0 :(得分:7)

如果信息在会话中,ASHX可以直接访问会话内容。

你需要实施IReadOnlySessionState,你会没事的。

<% @ webhandler language="C#" class="MyClass" %>

using System;
using System.Web;
using System.Web.SessionState;

public class MyClass: IHttpHandler, IReadOnlySessionState
{
   public bool IsReusable { get { return true; } }

   public void ProcessRequest(HttpContext ctx)
   {
       ctx.Response.Write(ctx.Session["ID"]);
   }
}

答案 1 :(得分:4)

如果它不是敏感数据,那么这样做的方法是将Session [“ID”]的值写入javascript变量,然后使用该变量将数据发布到ASHX处理程序。像这样:

var sessionVariable = '<%=HttpContext.Current.Session["ID"].ToString()%>';

然后:

 ID: sessionVariable, // etc ... 

答案 2 :(得分:2)

是否需要将会话变量传递给ASHX,或者ASHX是否能够访问会话变量?后者更安全,工作更少。你只需要将一个继承添加到IReadOnlySessionState接口,如果它只是读取它。如果您希望实际更改它,还可以继承其他接口,但这可以让您走上正确的轨道。 Here是一个链接。

修改:更正了链接。