【发布时间】:2010-08-18 16:16:39
【问题描述】:
我在我的项目中使用 Seesion,它存储了 useTypeID(管理员、经理等),而对于后台,只有管理员和经理可以进入,所以在我后台的每个页面的第一行中,我检查是否视野仍然存在,只有这样用户才能进入页面:
if (!EmployeeSession.IsAuthenticated || EmployeeSession.GetEmployeeType != 1 && EmployeeSession.GetEmployeeType != 2)
Response.Redirect("Default.aspx");
所有页面都使用相同的代码...而且所有页面都运行良好。
自从我添加会话以来,我有一页给我带来了很多麻烦。该页面仍然正确显示,但是当我从 DDL 中选择一个新区域时,我失去了对某些 reson 的看法,并且回发转到会话检查的错误部分...
我调试了它,我看到它只是因为 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...没什么特别的,而且,我还有大约20个其他相同的工作...当它不是来自DDL的回发时,一切都是工作得很好,就在回发之后我正在寻找会话):
<div><a href="SearchAreasWithDDL.aspx">חיפוש אזור</a></div>
如果需要,我很乐意提供任何其他代码,但在我看来,这是造成所有问题的代码......正如我所说,所有其他页面都在做同样的事情,唯一的区别是 DDL....
附:我什至没有点击按钮来获取与 DDL 相关的数据,会话在我进入回发页面的页面加载之前就终止了....
10 倍
【问题讨论】:
-
您可以通过下拉菜单发布您进入此页面的代码吗?如果会话正确保留或仍然丢失,您还可以通过评论此页面中的下拉列表来确认吗?
-
我不明白你问的最后一部分,但如果我这样做了,当我不检查会话时,页面运行良好......以及其他代码......我正在发布它....10x
-
我想问你的是,如果你从 SearchAreasWithDDL.aspx 中删除下拉菜单,那么如果你从这个页面转到另一个页面,会话是仍然保留还是丢失了?看 - 我想确定的是这个问题是否真的与下拉菜单有关......也许你可以在某处上传 SearchAreasWithDDL.aspx 的整个代码并发布一个链接......这可能会有所帮助!
标签: c# asp.net session c#-3.0 drop-down-menu