我在controller中自己写了一个简单的Session,在dal层中我想用到这个session,Session["name"]="1";
strSql.Append("select Location from Archives_Location where CompanyID=Session['name']");但是我不能直接写死,所以这样,但是这样写有报错,求教MVCsession

解决方案 »

  1.   

    既然叫DAL,就不应该与session产生什么关系, DAL中所使用到的 CompanyID 应该从MVC与DAL通信的过程中以值的方式传递进去。
      

  2.   

    strSql.Append("select Location from Archives_Location where CompanyID="+Session["name"]);
      

  3.   

    最好不要这样传递session 到 dal. 分层的目的就是分清责任,不让界面的代码和dal混在一起
      

  4.   

    感觉session在dal层中不能直接用,提示上下文不存在session
      

  5.   

    如果你一定要在DAL层中用session的话,可以这样:
    System.Web.HttpContext.Current.Session["name"]
      

  6.   


    一楼是正解,DAL层不应该和session产生什么关系,这是设计原则
      

  7.   

    这样写也是不行的啊public DataTable GetList(string CompanyID)
            {
                
                //string CompanyID =System.Web.HttpContext.Current.Session["CopmpanyID"].ToString();
                //System.Web.HttpContext.Current.Session["CompanyID"] = CompanyID;
                StringBuilder strSql = new StringBuilder();
                strSql.Append("select Location from Location where CompanyID=" );
                return DbHelperSQL.Query(strSql.ToString()).Tables[0];
            }
      

  8.   

    解决了public DataTable GetList(string CompanyID)
            {
                StringBuilder strSql = new StringBuilder();
                strSql.Append("select Location from Archives_Location where CompanyID=" + CompanyID + "");
                return DbHelperSQL.Query(strSql.ToString()).Tables[0];
            }