0

私は、ポストバック機能のない 1 つのページからすべてを実行していた 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 がもう一度実行されてから、クリック イベントが実行されます。page_load がすべてをリロードするのを止めて、更新したいコンテンツだけを更新するにはどうすればよいですか?

4

2 に答える 2

2

最も一般的には、ページの読み込み時に実行したくないコンテンツを !IsPostBack if ステートメントでラップします。

すなわち

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 に答える