页面之间传对象的问题

72615 2005-02-01 11:48:14
我需要在两个页面之间传递类型为DataTable 的对象。请问用什么方法呢?
...全文
153 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
sutalon 2005-02-01
  • 打赏
  • 举报
回复
支持 Eddie005(♂) 暴赱 『零零伍』 (︶︵︶) 的说法,


他讲的很清楚了
cnblackhawk 2005-02-01
  • 打赏
  • 举报
回复
Session,Cache,Appliction
Bruce_H21 2005-02-01
  • 打赏
  • 举报
回复
Microsoft 的网站里有相关的说明

wenform1.aspx 中加入一个属性

Public Readonly Property Property1() as string
Get
return ...DataTable
End Get


然后再本页的按钮事件中加入
Server.Transfer("webform2.aspx")


webform2
定义一个公共全局变量
Public sourcePage as webForm1
If not Page.IsPostBack Then
SourcePage =Ctype(Context.Handler,WebForm1)
label1.Text = sourcePage.Property1
  • 打赏
  • 举报
回复
用Session最简单
Eddie005 2005-02-01
  • 打赏
  • 举报
回复
◆ 1页面间传参的常用方式
1)request方式:仅适用于一个或多个字符串
Response.Redirect("webform2.aspx?myid=123&myname=eddie005");
取: string myID = Request.QueryString["myid"];
string myName = Request.QueryString["myname"];
但是该方法传参遇到特殊的字符例如“”&、“+”等就会有问题,所以需要进行编码转换:
string tmpID = Server.UrlEncode("123");
string tmpName = Server.UrlEncode("暴&走");
Response.Redirect("webform1.aspx?myid=" + tmpID + "&myname=" + tmpName);
取: string myID = Server.UrlDecode(Request.QueryString["myid"]);
string myName = Server.UrlDecode(Request.QueryString["myname"]);
对应的Javascript函数是escape()和unescape()

2)Session:适用于对象
存:Session["myTable"] = new DataTable();
取:DataTable tmp = Session["myTable"] as DataTable;

3)Server.Transfer:适用于对象
webForm1:
public int MyAge
{
get{return Convert.ToInt32(TextBox1.Text);}
}
public DataTable MyTable
{
get{return myDataTable;}
}

private void Button1_Click(object sender, System.EventArgs e)
{
Server.Transfer("webForm2.aspx");
}
webForm2:
private void Page_Load(object sender, System.EventArgs e)
{
if(!IsPostBack)
{
if(Context.Handler.ToString()=="ASP.webForm1_aspx")
{
webForm1 webForm =(webForm)Context.Handler;
int myAge = webForm.MyAge;
DataTable tmpTable = webForm.MyTable;
}
}
}

quunce 2005-02-01
  • 打赏
  • 举报
回复
我一般是用SESSION来保存
Overriding 2005-02-01
  • 打赏
  • 举报
回复
session
cache
fangwancong 2005-02-01
  • 打赏
  • 举报
回复
Session,Cache,Appliction都行
web_gus 2005-02-01
  • 打赏
  • 举报
回复
QueryString http1.0只支持255个字符,http1.1没有这个限制
henryfan1 2005-02-01
  • 打赏
  • 举报
回复
还可以通过QueryString的方式来传递,把DataTable序列化成STRING然后传过去,再反序化。
不过不知道QueryString有没有长度限制。
web_gus 2005-02-01
  • 打赏
  • 举报
回复
补充: Eddie005(♂) 暴赱 『零零伍』 (︶︵︶) ( )
application,Context.Items[]
yinbinfeng0451 2005-02-01
  • 打赏
  • 举报
回复
使用Session好了....
xulovewei 2005-02-01
  • 打赏
  • 举报
回复
建议用Session
flcandclf 2005-02-01
  • 打赏
  • 举报
回复
呵呵,大家都对啊
js981dz 2005-02-01
  • 打赏
  • 举报
回复
用Session

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧