我剥离了我的解决方案,以便我能理解为什么这不起作用。希望有人可以提供帮助。
aspx页面上只有一个占位符控件:
<asp:PlaceHolder ID="Placeholder1" runat="server" />
在后面的代码中,我设置了一个名为 test 的变量,并在Page_Load上,将变量更改为其他内容。为什么当我点击动态添加的LinkButton时,测试变量没有维持它的状态:
public string test = "Hello";
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Response.Write(test + "<br />"); //test = "Hello"
test = "Hello World!";
Response.Write(test + "<br />"); //test = "Hello World!"
}
Placeholder1.Controls.Clear();
CreateDynamicControl();
}
private void CreateDynamicControl()
{
LinkButton lnk = new LinkButton();
lnk.Click += new EventHandler(lbl_Click);
lnk.Text = "TEST LinkButton";
Placeholder1.Controls.Add(lnk);
}
void lbl_Click(object sender, EventArgs e)
{
LinkButton lnk = sender as LinkButton;
Response.Write("lbl_Click: " + test + "<br />");
}
答案 0 :(得分:0)
在ASP.NET变量中,不会在回发之间保持状态。您可以使用Session或ViewState来保留所需的值。
ViewState["test"] = "Hello World!";
Response.Write(ViewState["test"]);