生成されたコンテンツを含むページがあります。
Page.aspx:
<asp:DropDownList ID="cmbUsers" runat="server" AutoPostBack="True"
oninit="cmbUsers_Init">
</asp:DropDownList>
<asp:Panel ID="pnlRights" runat="server">
Page.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で試した)は疑わないが、設定を忘れた設定がある。キャッシングのあるものですか?ヒントを教えてください。