簡體   English   中英

Server.Transfer() 方法后按鈕單擊不起作用

[英]Button Click Not Working after Server.Transfer() method

問題:在第一個 aspx 頁面使用 C# 中的 Server.Transfer() 方法將焦點轉移到它之后,為什么按鈕單擊轉移到的 aspx 頁面沒有正確觸發。

答案:當Server.Transfer 之后在被轉移頁面中單擊按鈕時,它會在被轉移頁面中運行page_load(),而不是button_click()。 如果在傳輸的頁面中再次單擊該按鈕,則 button_click() 將觸發。

---- Main.aspx ----
<%@ Page Language="C#" AutoEventWireup="true" 
CodeBehind="Main.aspx.cs" 
Inherits="Server_Transfer_App.Main" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <asp:Label ID="Label1" runat="server" 
  Text="Enter Your First Name: "></asp:Label>
            <asp:TextBox ID="TextBox1" 
 runat="server"></asp:TextBox>
        </div>
        <p>
            <asp:Button runat="server" Text="Button" 
    OnClick="Button1_Click" />
        </p>
    </form>
</body>
</html>
-----------Main.aspx.cs-----------------------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace Server_Transfer_App
{
    public partial class Main : System.Web.UI.Page
    {
        protected void Page_Load(object sender, 
    EventArgs e)
        {

        }

        protected void Button1_Click(object sender, 
        EventArgs e)
        {
            Server.Transfer("~/WebForm1.aspx", 
        true);
            //Response.Redirect("~/WebForm1.aspx");
        }
    }
}
----------- WebForm1.aspx -------
<%@ Page Language="C#" AutoEventWireup="true" 
  CodeBehind="WebForm1.aspx.cs" 
 Inherits="Server_Transfer_App.WebForm1" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <asp:Label ID="Label1" runat="server" 
  Text="Label"></asp:Label>
            </div>
        <div>
            &nbsp;</div>
        <div>
            <%--<input id="Button1" type="button" value="button 1" runat="server" onserverclick="Button1_Click"/></div>--%>
            <asp:Button ID="Button1" runat="server" Text="Button 1" OnClick="Button1_Click1" />
            <div>
            -----------</div>
        <div>
            <asp:Button ID="Button2" runat="server" Text="Button 2" OnClick="Button2_Click" />
        </div>
    </form>
</body>
</html>
-------- WebForm1.aspx.cs ------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace Server_Transfer_App
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            // Use when transfer to this page using Server.Transfer("~/WebForm1.aspx") from Main.aspx
            Page pPage = Page.PreviousPage;
            if (pPage != null)
            {
                Label1.Text = ((TextBox)pPage.FindControl("TextBox1")).Text;
            }
            else
            {
                //Label1.Text = "Got to here, now click Button 2 to go back.";
                Label1.Text = "Did Page Load () in WebForm1, and pPage is NULL.";
            }

            //Response.Redirect("~/WebForm1.aspx");
        }

        protected void Button2_Click(object sender, EventArgs e)
        {
            Response.Redirect("~/Main.aspx");
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            Label1.Text = "Click on Button2";
        }

        protected void Button1_Click1(object sender, EventArgs e)
        {
            Label1.Text = "Performed Button1_Click1().";
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM