如何在asp.net把表單提交到另一頁
阿新 • • 發佈:2019-02-15
在ASP.NET中,每一個aspx頁面在server端都對應一個System.Web.UI.Page例項,所以把一個頁面Form中Server Controls的內容(server端對應於page類例項的資料)提交給另一個page類,跟asp中的實現方法有所不同。
在asp.net中,Form提交的工作原理是:
比如說在您的一個aspx檔案中,您使用了一個TextBox Server Control. 在您的Page class中, 有這麼一個例項:
TextBox TextBox1 = new TextBox();
您可以使用TextBox1在伺服器端來引用該物件。當ASP.NET執行完該頁面之後,客戶端(瀏覽器)得到的純HTML/DHTML中,會產生下面的程式碼,對應於伺服器端的邏輯:
<input name="TextBox1" type="text" id="TextBox1" />
注意:上邊的“name”屬性,和伺服器端程式碼中TextBox1物件的UniqueID Property是一致的。
此時的客戶端跟您的程式互動的唯一方式就是HTTP中的POST. POST提交 之後,ASP.NET檢查“name"是否和其所提交頁面對應得Page類中的某一Control的UniqueID一致,如果有,並且該Server
Control實現了IPostBackDataHandler藉口,則呼叫LoadPostData函式,您可以過載這個函式。如果實現了IPostBackEventHanlder, ASP.NET呼叫RaisePostBackEvent().
在ASP.NET中傳輸Form到另外的頁面,Inline Code(程式碼和html在同一頁面)和Code-Behind(程式碼和html在不同的頁面)地實現方式有所不同。下面是Inline Code的一個例子:
在WebForm1.aspx中:
1。為該頁面宣告類的名稱;<%@ Page Language="C#" ClassName="FirstPageClass" %>
2。為每一個要傳遞到另外頁面的元素,定義帶Get accessor的Property:
3。使用Server.Transfer("Webform2.aspx")把控制權提交 給另外一個WebForm class.
//////////////////////// WebForm1.aspx ////////////////////////////////////////
<%@ Page Language="C#" ClassName="FirstPageClass" %>
<html>
<head>
<script runat="server">
public string FirstName
{
get
{
return first.Text;
}
} public string LastName
{
get
{
return last.Text;
}
} void ButtonClicked(object sender, EventArgs e)
{
Server.Transfer("secondpage.aspx");
} </script> </head> <body> <form runat="server">
First Name: <asp:TextBox id="first" runat="server"/>
<br>
Last Name: <asp:TextBox id="last" runat="server"/>
<br>
<asp:Button OnClick="ButtonClicked" Text="Go to second page" runat=server />
</form>
</body>
</html>
////////////////////////////////////////////////////////////////////// 在目的Webform2.aspx中: 1。新增Reference指令;<%@ Reference Page="firstpage.aspx" %>
2。宣告一個WebForm1.aspx對應的class的例項:FirstPageClass fp;
3。利用HttpContext class, 獲得第一個得到 HTTP Request 的頁面的例項(Webform1.aspx): fp = (FirstPageClass)Context.Handler; //////////////////// WebForm2.aspx ////////////////////////////////////////////////////////////////////
<%@ Page Language="C#" %>
<%@ Reference Page="firstpage.aspx" %>
<html>
<head>
<script runat="server"> FirstPageClass fp; void Page_Load()
{
if (!IsPostBack)
{
fp = (FirstPageClass)Context.Handler;
}
}
</script>
</head>
<body> <form runat="server">
Hello <%=fp.FirstName%> <%=fp.LastName%>
</form> </body>
</html>
/////////////////////////////////////////////////////////////////////////////////////////////////////////
在asp.net中,Form提交的工作原理是:
比如說在您的一個aspx檔案中,您使用了一個TextBox Server Control. 在您的Page class中, 有這麼一個例項:
TextBox TextBox1 = new TextBox();
您可以使用TextBox1在伺服器端來引用該物件。當ASP.NET執行完該頁面之後,客戶端(瀏覽器)得到的純HTML/DHTML中,會產生下面的程式碼,對應於伺服器端的邏輯:
<input name="TextBox1" type="text" id="TextBox1" />
注意:上邊的“name”屬性,和伺服器端程式碼中TextBox1物件的UniqueID Property是一致的。
此時的客戶端跟您的程式互動的唯一方式就是HTTP中的POST. POST提交
在ASP.NET中傳輸Form到另外的頁面,Inline Code(程式碼和html在同一頁面)和Code-Behind(程式碼和html在不同的頁面)地實現方式有所不同。下面是Inline Code的一個例子:
在WebForm1.aspx中:
1。為該頁面宣告類的名稱;<%@ Page Language="C#" ClassName="FirstPageClass" %>
2。為每一個要傳遞到另外頁面的元素,定義帶Get accessor的Property:
3。使用Server.Transfer("Webform2.aspx")把控制權提交
<head>
<script runat="server">
public string FirstName
{
get
{
return first.Text;
}
} public string LastName
{
get
{
return last.Text;
}
} void ButtonClicked(object sender, EventArgs e)
{
Server.Transfer("secondpage.aspx");
} </script> </head> <body> <form runat="server">
First Name: <asp:TextBox id="first" runat="server"/>
<br>
Last Name: <asp:TextBox id="last" runat="server"/>
<br>
<asp:Button OnClick="ButtonClicked" Text="Go to second page" runat=server />
</form>
</body>
</html>
////////////////////////////////////////////////////////////////////// 在目的Webform2.aspx中: 1。新增Reference指令;<%@ Reference Page="firstpage.aspx" %>
2。宣告一個WebForm1.aspx對應的class的例項:FirstPageClass fp;
3。利用HttpContext class, 獲得第一個得到 HTTP Request 的頁面的例項(Webform1.aspx): fp = (FirstPageClass)Context.Handler; //////////////////// WebForm2.aspx ////////////////////////////////////////////////////////////////////
<%@ Page Language="C#" %>
<%@ Reference Page="firstpage.aspx" %>
<html>
<head>
<script runat="server"> FirstPageClass fp; void Page_Load()
{
if (!IsPostBack)
{
fp = (FirstPageClass)Context.Handler;
}
}
</script>
</head>
<body> <form runat="server">
Hello <%=fp.FirstName%> <%=fp.LastName%>
</form> </body>
</html>
/////////////////////////////////////////////////////////////////////////////////////////////////////////