我有一个看起来像这样的webform应用程序。static bool始终为真
public partial class MyPage : Page
{
private static bool _changed = false;
protected void btnSave_Click(object sender, EventArgs e)
{
if(_changed)
{
//some code here
}
}
protected void btnCancel_Click(object sender, EventArgs e)
{
Response.Redirect("~/MyPage.aspx");
}
protected void dropdownlist_SelectedIndexChanged(object sender, EventArgs e)
{
_changed = true;
}
}
所以我想要做的要点是,我有一个表格,里面包含一个下拉列表,并保存按钮。如果用户对下拉列表进行了更改,我将私有布尔值changed
设置为true。默认情况下,它是错误的。
出于某种原因,我不明白,changed
当它到达btnSave_clic
K法,即使它从未涉足过的dropdownlist_selectedIndexChanged
方法,这是在我的代码的唯一的地方,设置changed
是真实不虚。
的标记:
<asp:DropDownList ID="myDropDown" runat=server" OnSelectedIndexChanged="dropdownlist_SelectedIndexChanged" AutoPostBack="true">
<asp:ListItem Value="True">Yes</asp:ListItem>
<asp:ListItem Value="False">No</asp:ListItem>
<asp:Button ID="btnSave" Text="Save" OnClick="btnSave_Click" runat="server" />
请记住,一个静态变量将保持其值,直到应用程序池回收或值被重置。另外请记住,除非您希望单个用户更改所有用户的值,否则静态成员绝对是错误的选择。 – 2013-03-05 16:52:35
如果您有两个人同时访问该网站,则所有用户都会共享静态,其中一个用户可能触发会影响他们的更改。 – 2013-03-05 16:52:40