如何将会话参数从jquery传递到ASHX处理程序
本文关键字:ASHX 处理 程序 jquery 会话 参数 | 更新日期: 2023-09-27 18:10:29
下面是我的Jquery代码,我想传递会话参数,例如会话["ID"]。Jquery调用ASHX页面
下面所有的参数都工作得很好,会话参数有一个值,但是我怎么能从Jquery传递会话参数?
所以下面的代码"参数Sessionparameter"应该替换为会话["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() %>'
,但它不工作....
如果信息在会话中,则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"]);
}
}
这样做的方法,如果它不是敏感数据,将会话["ID"]的值写入一个javascript变量,然后使用该变量将数据发布到ASHX处理程序。像这样:
var sessionVariable = '<%=HttpContext.Current.Session["ID"].ToString()%>';
然后:
ID: sessionVariable, // etc ...
是否需要将会话变量传递给ASHX,或者ASHX能够访问会话变量是更好的选择?后者更安全,工作更少。如果IReadOnlySessionState接口只需要读取它,那么你只需要向它添加一个继承。如果您希望实际更改它,您可以从其他接口继承,但这应该会使您走上正确的轨道。这是一个链接。
编辑:更正链接