Asp.net在頁面間傳遞大量資料(資料表)建議採用的方法

來源:互聯網
上載者:User

能讓資料在 兩個不同網站之間傳遞嗎? 我現在是想A網站的資料 傳遞到B網站.......

建議使用Cache
(1)不太影響程式效能不太可能,你都說了,是大量資料。我舉個例子,你是從A.aspx傳到B.aspx。那麼如果有兩個使用者都會訪問A,那你的資料是否要做到不會影響到不同的用戶端?如果是這樣的話,那麼你儲存的地方勢必不能用Cache(不是絕對不能用,但是你必須區分用戶端,你要做的工作更多),只能用Session, Cookies, ViewState, QueryString, Form等方法。

第二個條件:如果不止一個頁面要做這個操作,比如A.aspx和B.aspx都需要傳遞“大量資料”給C.aspx,那麼你如果存在Session裡,又不能使之互相覆蓋。所以如果是少量資料,比如只是一個數字,那麼用ViewState, QueryString, Form都可以,只是他們需要多一趟往返於伺服器和用戶端。而象你這樣大量資料的話,QueryString估計是不能用了。而ViewState其實也是Form。你可以考慮一下實際情況選擇具體合用的方法。

(2)使用Server.Transfer方法
這個才可以說是面象對象開發所使用的方法,其使用Server.Transfer方法把流程從當前頁面引導到另一個頁面中,新的頁面使用前一個頁面的應答流,所以這個方法是完全面象對象的,簡潔有效。下面這個代碼是展示在需要很多個參數的時候,使用的方法,如果參數比較少就沒必要使用這個方法了.

如果讓所有的查詢頁面都繼承一個介面,在該介面中定義一個方法,該方法的唯一作用就是讓結果頁面獲得構建結果時所需的參數,就可實現多頁面共用一個結果頁面操作!
1、先定義一個類,用該類放置所有查詢參數複製代碼 代碼如下:/**//// <summary>
/// QueryParams 的摘要說明
/// </summary>
public class QueryParams
{
private string firstName;
private string lastname;
private int age;
public string Firstname
{
get { return this.firstname; }
set { this.firstname = value; }
}
public string LastName
{
get { return this.lastname; }
set { this.lastname = value; }
}
public string Age
{
get { return this.age; }
set { this.age = value; }
}
}

2、介面定義複製代碼 代碼如下:/**//// <summary >
/// 定義查詢介面。
/// </summary >
public interface IQueryParams
{
/**//// <summary >
/// 參數
/// </summary >
QueryParams Parameters { get;}
}

3、查詢頁面繼承IQueryParams介面(QueryPage.aspx)
QueryPage.aspx 複製代碼 代碼如下:<form id="form1" runat="server">
<div>
<asp:TextBox ID="txtFirstName" runat="server"></asp:TextBox>
<asp:TextBox ID="txtLastName" runat="server"></asp:TextBox>
<asp:TextBox ID="txtAge" runat="server"></asp:TextBox>
<asp:Button ID="btnEnter" runat="server" Text="Button" OnClick="btnEnter_Click" /></div>
</form>

QueryPage.aspx.cs 複製代碼 代碼如下:public partial class QueryPage : System.Web.UI.Page, IQueryParams
{
private QueryParams queryParams;
public QueryParams Parameters
{
get
{
return queryParams;
}
}
public void btnEnter_Click(object sender, System.EventArgs e)
{
//賦值
queryParams = new QueryParams();
queryParams.FirstnName = this.txtFirstName.Text;
queryParams.Lastname = this.txtLastName.Text;
queryParams.Age = this.txtAge.Text;
Server.Transfer( "ResultPage.aspx ");
}
protected void Page_Load(object sender, EventArgs e)
{ }
}

4、接收頁面(ResultPage.aspx)
ResultPage.aspx.cs 複製代碼 代碼如下:public partial class ResultPage : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
QueryParams queryParams = new QueryParams();
IQueryParams queryInterface;
//實現該介面的頁面
if (Context.Handler is IQueryParams)
{
queryInterface = (IQueryParams)Context.Handler;
queryParams = queryInterface.Parameters;
}
Response.Write("FirstName: ");
Response.Write(queryParams.FirstName);
Response.Write(" <br/ >Lastname: ");
Response.Write(queryParams.LastName);
Response.Write(" <br/ >Age: ");
Response.Write(queryParams.Age);
}
}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.