在Asp.net中通过引用传递给Generic Handler(.ashx)

时间:2012-10-19 06:50:52

标签: datatable parameter-passing pass-by-reference generic-handler

我关注了这篇文章:DataTable using Server Side Processingdefault.aspx内,我使用以下方式调用.ashx

<script type="text/javascript">
$(function () {
    $('#example').dataTable({
        'bProcessing': true,
        'bServerSide': true,
        'sAjaxSource': '/data.ashx'
    });
});

Page_Load事件defaut.aspx

Employee emp=new Employee();
emp.name="abc";
emp.addr="pqr";
emp.phone="123";

Employee是Class的名称。
如何将Employee对象传递给Data.ashx

我尝试使用HttpContext.Current.Session,但将Session对象显示为null 请帮助。

1 个答案:

答案 0 :(得分:4)

要访问会话内部我使用IRequiresSessionState界面,如下所示:

public class Data : IHttpHandler, System.Web.SessionState.IRequiresSessionState
{
     public void ProcessRequest(HttpContext context)
     {
         // get Employee object from session here
         Employee emp =(Employee)HttpContext.Current.Session["employee"];
     }
}

Page_Load defaut.aspx事件中,在会话中设置一个Employee对象:

Employee emp=new Employee();
emp.name="abc";
emp.addr="pqr";
emp.phone="123";

HttpContext.Current.Session["employee"]=emp;

注意:
有两个接口可以在Generic Handler中对HttpSession进行访问:

  1. <强> IRequiresSessionState
        使用此接口,我们可以读取和写入会话变量。

  2. <强> IReadOnlySessionState
        使用此接口,我们只能读取,不能编写或编辑会话变量。

  3. 有关详细信息,请访问以下链接:IRequiresSessionState vs IReadOnlySessionState