会话和DDL的奇怪问题

时间:2010-08-17 09:05:12

标签: c# asp.net session c#-3.0 drop-down-menu

我在我的项目中使用Seesion存储useTypeID(管理员,经理等),而后台只有管理员和管理员可以进入,所以在我的后台的第一行中的每个页面中我检查是否只有当用户可以进入页面时,才能看到这种情况:

if (!EmployeeSession.IsAuthenticated || EmployeeSession.GetEmployeeType != 1 && EmployeeSession.GetEmployeeType != 2)
        Response.Redirect("Default.aspx");

所有页面的代码相同......并且所有页面都完美无缺。

自从我添加会话以来,我有一页给了我很多麻烦。该页面仍然正确显示,但是当我从DDL中选择一个新区域时,我正在失去我的看法以获得一些共鸣,并且回发将进入会话检查的错误部分......

我对它进行了调查,正如我所看到的那样,它只是因为DDL,可以是或者我还有其他一些我看不到的问题吗?

这是.aspx文件中的代码:

<td><asp:DropDownList ID="ddlAreasSearch" runat="server" /></td>

这是.cs文件中的代码:

protected void Page_Load(object sender, EventArgs e)
{
    if (!EmployeeSession.IsAuthenticated || EmployeeSession.GetEmployeeType != 1 && EmployeeSession.GetEmployeeType != 2)
        Response.Redirect("Default.aspx");

    if (Page.IsPostBack)
        return;

    DataSet ds = UiHelper.InitDDL(
                        ddlAreasSearch,
                        0,
                        "AreaName",
                        "AreaID",
                        ConfigurationManager.AppSettings["ConnStr"],
                        "spAreas_Select"
                    );

}

UiHelper仅用于填充具有基本功能的DDL:

public static DataSet InitDDL(DropDownList ddl, Int16 DataSetTableIndex, string DataTextField, string DataValueField, string ConnectionString, string CommandName, params SqlParameter[] Params)
{
    DataSet ds = DbHelper.ExecuteDataSet(ConnectionString, CommandName, Params);
    ddl.DataSource = ds.Tables[DataSetTableIndex];
    ddl.DataTextField = DataTextField; 
    ddl.DataValueField = DataValueField;
    ddl.DataBind();

    return ds;
}

调用此页面的行是(只是一个href ...没有什么特别的,而且agian,我还有大约20个相同的工作......当它不是来自DDL的回发时,每个东西都是工作得很好,就在回发之后,我正在寻找会议):

<div><a href="SearchAreasWithDDL.aspx">חיפוש אזור</a></div>

我很乐意提供任何其他代码,但是正如我所看到的,这是创建所有问题的代码......正如我所说的,所有其他页面都在做同样的事情,唯一的区别是DDL ....

P.S。我甚至没有获得与DDL相关的数据的按钮单击,会话在我在回发后输入页面的页面加载之前就死了....

10倍

1 个答案:

答案 0 :(得分:0)

我找到了解决方案,问题不在于DDL,这是因为两件事......

  1. 我有一个LinkBut​​ton,在EXIT上进行重定向,我在那里使用了一个URL,还有CS文件中的btnClick中的一些代码,当我从CS文件中移除URL时,URL比CS文件更强aspx它还可以,但仍然有beck按钮的安全问题和编写免费的url路径所以我用这些线来解决问题,现在每件事都很有效......

    Response.Buffer = true;     Response.ExpiresAbsolute = DateTime.Now.AddDays(-1d);     Response.Expires = -1500;     Response.CacheControl =“no-cache”;     if(!EmployeeSession.IsAuthenticated || EmployeeSession.GetEmployeeType!= 1&amp;&amp; EmployeeSession.GetEmployeeType!= 2)         的Response.Redirect( “Default.aspx的”);

  2. 这些行停止在浏览器和http 1.0和1.1的代理中缓存页面,所以这应该有用......

    10倍