如何阻止动态Web控件触发page_load?

时间:2012-07-03 19:20:45

标签: c# asp.net html-lists

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

我是ASP.net网络应用程序的新手。

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

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重新加载所有内容并仅更新我希望刷新的内容?

如果这不可行,我就是这样做的。我愿意接受建议,以获得我正在寻找的功能。

2 个答案:

答案 0 :(得分:2)

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

private void Page_Load()
{
    if (!IsPostBack)
    {
        //Do actual page load stuff
    }
}

答案 1 :(得分:2)

Page_Load是Postbacks&标准ASP.NET Page lifecycle的一部分。回调,以及您遇到的行为。

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

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

这仅在用户首次请求页面时将LinkBut​​ton添加到页面控件,而不是随后。