0

1ソースページには、次のようなページ読み込み方法があります。

protected void Page_Load(object sender, EventArgs e)
        {
                TextBox1.Text = DateTime.Today.AddDays(1).ToShortDateString();
        }

これにより、ソースページがレンダリングされたときに明日の日付を表示するtextbox1.textが生成されます。このソースページをターゲットページにクロスポストし、ターゲットページの読み込みイベントで

if (Page.PreviousPage != null && PreviousPage.IsCrossPagePostBack == true)
            {
              TextBox SourceTextBox1 = (TextBox)Page.PreviousPage.FindControl("TextBox1");
                if (SourceTextBox1 != null)
                {
                    Label1.Text = SourceTextBox1.Text;
                 }
              }

問題は、ユーザーがtextbox1のコンテンツを変更した場合、おそらく、ターゲットページのlabel1がユーザー入力をキャッチして表示する必要がありますが、ソースページのロードイベントで設定したものだけが表示されるようになりました。セルフページポストバックのライフサイクルは理解していますが、これはクロスページポストバックです。IMO、ソースページの読み込みイベントはこれとは何の関係もありませんが、なぜユーザー入力を上書きするのですか?何か案が。

4

1 に答える 1

1

if(!IsPostBack)これをチェックで囲んでください。

protected void Page_Load(object sender, EventArgs e)
{
    if(!IsPostBack)
    {
        TextBox1.Text = DateTime.Today.AddDays(1).ToShortDateString();
    }
}

そうしないと、ポストバックごとに値が上書きされます。したがってServer.Transfer、他のページに移動すると、すでに変更されています。

于 2013-03-12T15:42:22.643 に答える