我有一个包含生成内容的页面。
页面.aspx:
<asp:DropDownList ID="cmbUsers" runat="server" AutoPostBack="True"
oninit="cmbUsers_Init">
</asp:DropDownList>
<asp:Panel ID="pnlRights" runat="server">
页面.aspx.cs:
protected void Page_Load(object sender, EventArgs e)
{
string [] roles = Roles.GetAllRoles();
string sel_user = ... ; // get the user name selected by combo
foreach (string role in roles)
{
CheckBox chk = new CheckBox();
chk.Text = role;
chk.Checked = Roles.IsUserInRole(sel_user, role);
pnlRights.Controls.Add(chk);
}
}
protected void cmbUsers_Init(object sender, EventArgs e)
{
... // fill the combo with user list
if (!IsPostBack)
{
{
cmbUsers.SelectedValue = // the current signed username;
}
}
}
在第一次加载时,页面是正确的 - 所有复选框都设置为应有的状态(选中用户所在的角色)。当您在组合中更改用户时会发生问题。在调用回发更改后,所有复选框都再次正确设置(在调试器中看到),但浏览器显示设置为前一个用户的复选框。我不怀疑浏览器错误(在 IE、Maxthon、Mozilla 中尝试过),但有些设置我忘记设置。是缓存的东西吗?请给我一些提示好吗?