0

我积累了一个 ASP.NET 项目,该项目在一个页面上运行所有内容,没有回发功能。该站点的核心使用我们正在尝试处理的 Silverlight 应用程序。

我正在尝试使用以下代码动态创建列表项。

void AddLinkButton(string id, string text) {
        LinkButton link = new LinkButton();
        link.ID = id;
        link.Text = text;
        link.Click += new EventHandler(link_Click);
        HtmlGenericControl li = new HtmlGenericControl("li");
        li.Controls.Add(link);
        tabsNav.Controls.Add(link);
    }

这一切都很好,花花公子。但是,当单击链接时,它会重新运行 page_load,然后运行 ​​click 事件。如何阻止 page_load 重新加载所有内容并仅更新我希望刷新的内容?

4

2 回答 2

2

最常见的情况是,我们使用 !IsPostBack if 语句包装我们不想在页面加载中执行的内容。

IE

private void Page_Load()
{
    if (!IsPostBack)
    {
        //Do actual page load stuff
    }
}
于 2012-07-03T19:23:58.027 回答
2

Page_LoadASP.NET Page lifecycle是回发和回调标准的一部分,您遇到的行为是预期的。

为了让您不在 Postback 上创建按钮,请使用类似于

protected void Page_Load(object sender, EventArgs e)
{
    if(!IsPostBack && !IsCallback)
        AddLinkButton("abc", "abc");
}

这仅在用户第一次请求页面时将 LinkBut​​ton 添加到页面控件,但随后不会。

于 2012-07-03T19:25:39.787 回答