Asp.net在页面间传递大量数据(数据表)建议采用的方法
更新时间:2021年9月22日 10:17 点击:1543
能让数据在 两个不同站点之间传递吗? 我现在是想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);
}
}
建议使用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);
}
}
相关文章
- 这篇文章主要介绍了使用perl实现拆分数据表(mysql)并迁移数据实例,本文提供了3个脚本,分别用于拆分数据表、迁移数据、插入测试数据,需要的朋友可以参考下...2020-06-29
asp.net中在用ajax格式传递数据到aspx页面时出现乱码
asp.net中在用ajax格式传递数据到aspx页面时有时会出现乱码,很是疑惑,不要走开接下来介绍解决方法,感兴趣的朋友可以了解下...2021-09-22mysql教程:读取数据表字段名 mysql_fetch_field()
现在我们来看看 mysql_fetch_field() 函数吧,这个函数 是就读取mysql 数据表的例名,字段名.下面我们来看看它的语法哦. mysql_fetch_field(data,field_offset) mysql_...2016-11-25如何在前台脚本通过json传递数据到后台(使用微软自带的ajax)
这篇文章主要介绍了如何使用微软自带的ajax在前台脚本通过json传递数据到后台的实现方法...2021-09-22- 在进行数据表检查或修补时,可以先将数据表锁定,可确保数据表的安全: mysql>LOCK TABLE tbl_name READ; mysql>FLUSH TABLES; 将数据表锁定后再进行检查或修补的工作。...2016-11-25
- Excel如果我们自己要写处理函数是有点难了,但有excel处理插件了今天我们就一起来看一个PHP处理Excel数据表类吧,非常的实用希望对各位有帮助. 一、PHP导入Excel 使用...2016-11-25
- 这篇文章给大家详细介绍了MySQL清空数据表的方法,文中给出了实例代码,对大家学习使用MySQL具有一定的参考借鉴价值,有需要的可以参考借鉴,下面来一起看看吧。...2016-10-20
- 这篇文章主要介绍了DropDownList绑定数据表实现两级联动具体实现,需要的朋友可以参考下...2021-09-22
- 强大的php可以利用mysql交互的相关函数可以获取数据表的字段信息,如可以获取数据表获取字段名,字段长度,字段信息等。 $hostname="localhost"; //定义连接...2016-11-25
- 这篇文章主要介绍了R语言 数据表匹配和拼接 merge函数的使用说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-05-06
- 如果数据表有问题,可以利用--recover --quick参数做修补的工作: linux#myisamchk --recover --quick tbl_name linux#isamchk --recover --quick tbl_name 如果上面...2016-11-25
- $database='';//数据库教程名 $options=array( 'hostname' => '',//ip地址 'charset' => 'utf8',//编码 'filename' => $database.'.sql',//文件名 ...2016-11-25
Windows 8 Metro用C#连接SQLite及创建数据库,数据表的增删改查的实现
本篇文章小编为大家介绍,Windows 8 Metro用C#连接SQLite及创建数据库,数据表的增删改查的实现。需要的朋友参考下...2020-06-25- 本文详细讲解了Postgresql删除数据库表中重复数据的几种方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2022-10-03
- 实现数据的导入导出,数据表结构的导入导出 ********************************************************/ // //包含Mysql数据库操作文件 ...2016-11-25
- 作者:mydowns 出处:把握时间网站:http://www.85time.com, http://www.mydowns.com 原贴地址如下: http://www.mydowns.com/article_show.php?id=32 详...2016-11-25
MySQL实现当前数据表的所有时间都增加或减少指定的时间间隔(推荐)
这篇文章主要介绍了MySQL实现当前数据表的所有时间都增加或减少指定的时间间隔,非常不错,具有参考借鉴价值,需要的朋友可以参考下...2017-02-19- 这篇文章主要介绍了SQLite教程(三):数据表和视图简介,本文讲解了创建数据表、表的修改、表的删除、创建视图、删除视图等内容,需要的朋友可以参考下...2020-07-11
- 代码如下 复制代码 $link=mysql教程_connect("localhost","root","3435945")or die("***".mysql_error()); echo "成功接连到服务器"; i...2016-11-25
- php 删除数据表与删除数据库 //---------------------------删除数据表 function Ebak_Drop($tablename,$dbname){ global $empire; $dbname=RepPostVar($dbnam...2016-11-25