在ASP.NET中把数据POST到其他页面
生活随笔
收集整理的這篇文章主要介紹了
在ASP.NET中把数据POST到其他页面
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
先來建兩個測試頁面:test1.aspx和test2.aspx,內容如下:
test1.aspx 頁面:
<!DOCTYPE?HTML?PUBLIC?"-//W3C//DTD?HTML?4.0?Transitional//EN"?>
<HTML>
????<HEAD>
????????<title>Test1</title>
????????<meta?name="GENERATOR"?Content="Microsoft?Visual?Studio?.NET?7.1">
????????<meta?name="CODE_LANGUAGE"?Content="C#">
????????<meta?name=vs_defaultClientScript?content="JavaScript">
????????<meta?name=vs_targetSchema?content="http://schemas.microsoft.com/intellisense/ie5">
????</HEAD>
????<body>
????????<!--?下面在?from?標簽中加了onsubmit事件處理,以便在提交數據時指向其他的頁面?-->
????????<form?id="Form1"?method="post"?runat="server"?onsubmit="this.action='test2.aspx'">
????????請輸入您的姓名:<asp:TextBox?id=txtName?runat="server"></asp:TextBox>
????????<asp:Button?id=btnOK?runat="server"?Text="發送"?Width="56px"></asp:Button>
????????</form>
????</body>
</HTML> test1.aspx.cs 文件內容:
using?System;
using?System.Collections;
using?System.ComponentModel;
using?System.Data;
using?System.Drawing;
using?System.Web;
using?System.Web.SessionState;
using?System.Web.UI;
using?System.Web.UI.WebControls;
using?System.Web.UI.HtmlControls;
namespace?Ctrls
{
????/**////?<summary>
????///?Test1?的摘要說明。
????///?</summary>
????public?class?Test1?:?System.Web.UI.Page
????{
????????protected?System.Web.UI.WebControls.TextBox?txtName;
????????protected?System.Web.UI.WebControls.Button?btnOK;
????
????????private?void?Page_Load(object?sender,?System.EventArgs?e)
????????{
????????????//?在此處放置用戶代碼以初始化頁面
????????}
????????Web?窗體設計器生成的代碼#region?Web?窗體設計器生成的代碼
????????override?protected?void?OnInit(EventArgs?e)
????????{
????????????//
????????????//?CODEGEN:?該調用是?ASP.NET?Web?窗體設計器所必需的。
????????????//
????????????InitializeComponent();
????????????base.OnInit(e);
????????}
????????
????????/**////?<summary>
????????///?設計器支持所需的方法?-?不要使用代碼編輯器修改
????????///?此方法的內容。
????????///?</summary>
????????private?void?InitializeComponent()
????????{????
????????????this.Load?+=?new?System.EventHandler(this.Page_Load);
????????}
????????#endregion
????}
}
test2.aspx 文件內容:
<%@?Page?language="c#"?Codebehind="Test2.aspx.cs"?AutoEventWireup="false"?Inherits="Ctrls.Test2"?%>
<!DOCTYPE?HTML?PUBLIC?"-//W3C//DTD?HTML?4.0?Transitional//EN"?>
<HTML>
????<HEAD>
????????<title>Test2</title>
????????<meta?name="GENERATOR"?Content="Microsoft?Visual?Studio?.NET?7.1">
????????<meta?name="CODE_LANGUAGE"?Content="C#">
????????<meta?name=vs_defaultClientScript?content="JavaScript">
????????<meta?name=vs_targetSchema?content="http://schemas.microsoft.com/intellisense/ie5">
????</HEAD>
????<body>
????????<form?id="Form1"?method="post"?runat="server"><FONT?face=宋體>您的姓名:<asp:Label?id=lbName?runat="server"></asp:Label><BR><BR>
????????????????你的地址:<asp:TextBox?id=txtAddress?runat="server"></asp:TextBox><asp:Button?id=btnOK?runat="server"?Text="發送"?Width="64px"></asp:Button><BR><asp:Label?id=lbAddr?runat="server"></asp:Label></FONT>
????????</form>
????</body>
</HTML>
test2.aspx.cs 文件內容:
using?System;
using?System.Collections;
using?System.Collections.Specialized;
using?System.ComponentModel;
using?System.Data;
using?System.Drawing;
using?System.Web;
using?System.Web.SessionState;
using?System.Web.UI;
using?System.Web.UI.WebControls;
using?System.Web.UI.HtmlControls;
namespace?Ctrls
{
????/**////?<summary>
????///?Test2?的摘要說明。
????///?</summary>
????public?class?Test2?:?System.Web.UI.Page
????{
????????protected?System.Web.UI.WebControls.TextBox?txtAddress;
????????protected?System.Web.UI.WebControls.Button?btnOK;
????????protected?System.Web.UI.WebControls.Label?lbAddr;
????????protected?System.Web.UI.WebControls.Label?lbName;
????
????????private?void?Page_Load(object?sender,?System.EventArgs?e)
????????{
????????????if?(!?IsPostBack?)
????????????{
????????????????lbName.Text?=?Convert.ToString(Request.Form["txtName"]);
????????????}
????????}
????????Web?窗體設計器生成的代碼#region?Web?窗體設計器生成的代碼
????????override?protected?void?OnInit(EventArgs?e)
????????{
????????????//
????????????//?CODEGEN:?該調用是?ASP.NET?Web?窗體設計器所必需的。
????????????//
????????????InitializeComponent();
????????????base.OnInit(e);
????????}
????????
????????/**////?<summary>
????????///?設計器支持所需的方法?-?不要使用代碼編輯器修改
????????///?此方法的內容。
????????///?</summary>
????????private?void?InitializeComponent()
????????{????
????????????this.btnOK.Click?+=?new?System.EventHandler(this.btnOK_Click);
????????????this.Load?+=?new?System.EventHandler(this.Page_Load);
????????}
????????#endregion
????
????????private?void?btnOK_Click(object?sender,?System.EventArgs?e)
????????{
????????????lbAddr.Text?=?txtAddress.Text;
????????}
????}
}
上面兩個頁面與平常的頁面一樣,只是在test1.aspx頁面中,設置了form標簽的onsubmit事件,以使用在發送數據之前,把頁面指向其他的頁面:<form?id="Form1"?method="post"?runat="server"?onsubmit="this.action='test2.aspx'">.
打開test1.aspx頁面,填寫數據之后按提交按鈕,頁面將數據提交到test2.aspx頁面,但是這時我們將得到一個"此頁的視圖狀態無效,可能已損壞。"的運行時錯誤.
為了解決這個問題,我們可以重寫Page類的DeterminePostBackMode方法.修改test2.aspx.cs文件,加入DeterminePostBackMode方法,如下:
/**////?<summary>
????????///?此方法用來獲取表單的數據,如果此方法返回null值的話,?IsPostBack?屬性將會設置為?false
????????///?當?IsPostBack?屬性為?false?時,ASP.NET就不會加載視圖狀態的邏輯,那也就不會出
????????///?現"此頁的視圖狀態無效,可能已損壞。"的運行時錯誤了
????????///?</summary>
????????protected?override?NameValueCollection?DeterminePostBackMode()
????????{
????????????//?這里主要檢查是否是從其他頁面請求過來的,
????????????//?如果是從其他頁面請過來就返回空,不加載視圖狀態
????????????if?(Request.UrlReferrer?==?null)
????????????{
????????????????return?null;
????????????}
????????????string?url?=?Request.UrlReferrer.ToString();
????????????url?=?url.Substring(url.LastIndexOf("/")?+?1).ToLower();
????????????if?(url?!=?"test2.aspx")
????????????{
????????????????return?null;
????????????}
????????????return?base.DeterminePostBackMode?();
????????}
在重新打開test1.aspx,然后把數據提交到test2.aspx頁面,這樣就不會出現錯誤了,頁且在test2.aspx頁面還可以做回傳處理呢.
文章出處:我的網站
轉載于:https://www.cnblogs.com/kuku/archive/2004/11/08/61408.html
總結
以上是生活随笔為你收集整理的在ASP.NET中把数据POST到其他页面的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 远方 vs How did I fall
- 下一篇: WEBTIMER控件研究的心得:丢开书本