???求页面之间传数值那个方法最好?? 我的程序是c/s结构? 现在多处用到了页面之间的传递数值?? 请问用那种方法来实现页面之间的传数值效果最好?? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 一般来说都是用queryString来传递吧,所有的网站基本上都有queryString。因为都是页面间传递,所以和cs结构无关了。 楼主问的应该是状态管理吧?对同一页或不同页的多个请求维护状态和页信息,不同的方法有不同的作用和适用场合。大致上有以下方法:CookieSessionApplicationCache隐藏域/ViewState/ControlStateProfileQueryString跨页提交各种状态管理方法的对比如下: 存储位置 类型限制 大小限制 适用对象 使用范围 过期策略 安全性Cookie 客户端Cookie文件夹 字符串 每个4K 单个用户 当前请求上下文 绝对时间过期 低Session-InProc 客户端Cookie和Web服务器内存 任何类型 受内存限制 单个用户 当前请求上下文 平滑时间过期 比较高Session-StateServer 客户端Cookie和Windows服务所在服务器内存 可序列化类型 受内存限制 单个用户 当前请求上下文 平滑时间过期 比较高Session-SqlServer 客户端Cookie和SQL Server服务器硬盘 可序列化类型 受数据库限制 单个用户 当前请求上下文 平滑时间过期 比较高Application Web服务器内存 任何类型 受内存限制 所有用户 当前请求上下文 应用程序结束则无效 高Cache Web服务器内存 任何类型 受内存限制 所有用户 当前请求上下文 平滑时间过期、绝对时间过期、依赖过期 高ViewState 页面隐藏域 可序列化类型 受表单提交大小限制 单个用户 当前页面 页面关闭则无效 比较低Profile 客户端Cookie和数据库 可序列化类型 受数据库限制 单个用户 当前请求上下文 Cookie过期时间或者长期存在 比较高Querystring 页面URL 字符串 不超过2K 单个用户 当前页面 页面关闭则无效 低一般来说,QueryString和Session是用得比较多的。 具体参看:http://hi.baidu.com/satdown/blog/item/fde4015508f750c2b645aeaf.html 不要用静态变量子页定义个public变量 或者子页类的构造函数带参数的 反正我传值的时候都是直接在地址栏传值的,然后在用queryString来获取 页面传值:1.cookie 受限程度大,易丢失2.session 使用方便,易丢失3.viewstate 4.application 受内存限制,个人平时很少用5.Querystring 暴露参数,要适当做处理,自我感觉好用6.hidden 表单隐藏域个人而言:QueryString和Session是用得较多 楼上的怎么都乱答来着!人家楼主问的是C/S结构的!winform!!---------------------------To:楼主,一般采用对窗体的构造函数的改写,通过改写构造函数,传递参数给另外一个窗体,达到窗体之间传递值的目的。 楼主叙述的问题也有问题吧?C/S结构?页面之间?如果是C/S结构就该说是窗体之间页面之间是对网页说的,那是B/S结构,楼主先确定一下是C/S的还是B/S的? 扯蛋的人真多.别人都说了是c/s程序了.搞些web里的方法乐此不彼.... 我晕倒,看了这个帖子,才知道CSDN里刷分的人这么多人家楼主问的是C/S的 (以下用窗体Form2和窗体Form3为例) 1、先在Form2中定义一个成员变量和一个属性如下: private string form2zhi = null; public string Form2ChuanZhi { get { return form2zhi; } } 2、再在Form3中定义一个成员变量和一个属性如下: private string form3zhi = null; public string Form3ChuanZhi { set { form3zhi = value; } get { return form3zhi; } } 3、以上基本已经搞定了,为了能够实现这个传值看的清楚一点,我在Form2加了一个bunton命名为btn_ChuanZhi 4、双击btn_ChuanZhi在这个事件中写入以下代码(主要是显示Form3窗体和将Form2中的值传过去): Form3 form3 = new Form3(); form3.Form3ChuanZhi = form2zhi;//将值传过去 form3.Show(); 5、在Form3中托一个Label控件,并双击Form3窗体Form3_Load事件中写入以下代码: label1.Text = form3zhi;//为了显示值已经传过来了 6、这个运行是没错误了,但在Form3还不能看到传过来的值。下面来给Form2中的form2zhi赋值就可以了。 双击Form2窗体在Form2_Load中写入以下代码即可实现: form2zhi = "将我传过去!"; 好了到目前为止不同窗体间的传值已经实现了。以上方法对所有窗体都可用,不管是子窗体与主窗体之间还是子窗体与子窗体之间都可以。 C/S 结构的用Get set 访问器就可以了,记住一个值传给其他窗体的控件B/S 一般用的有 查询字符串,Session ,Appllicaiton,上下文,知道这些就可以了 给人写一个两个窗体之间值的传递的方法,不管对于子窗体还是父窗体都可用.具体代码如下: //form2向form3传值(以下用窗体Form2和窗体Form3为例) 1、先在Form2中定义一个成员变量和一个属性如下: private string form2zhi = null; public string Form2ChuanZhi { get { return form2zhi; } } 2、再在Form3中定义一个成员变量和一个属性如下: private string form3zhi = null; public string Form3ChuanZhi { set { form3zhi = value; } get { return form3zhi; } } 3、以上基本已经搞定了,为了能够实现这个传值看的清楚一点,我在Form2加了一个bunton命名为btn_ChuanZhi 4、双击btn_ChuanZhi在这个事件中写入以下代码(主要是显示Form3窗体和将Form2中的值传过去): Form3 form3 = new Form3(); form3.Form3ChuanZhi = form2zhi;//将值传过去 form3.Show(); 5、在Form3中托一个Label控件,并双击Form3窗体Form3_Load事件中写入以下代码: label1.Text = form3zhi;//为了显示值已经传过来了 6、这个运行是没错误了,但在Form3还不能看到传过来的值。下面来给Form2中的form2zhi赋值就可以了。 双击Form2窗体在Form2_Load中写入以下代码即可实现: form2zhi = "将我传过去!"; 好了到目前为止不同窗体间的传值已经实现了。以上方法对所有窗体都可用,不管是子窗体与主窗体之间还是子窗体与子窗体之间都可以。 from2向from1传值将from1的FormBorderStyle属性设为FixedDialog在form1的按钮click事件写 from2 f = new from2(); if (f.ShowDialog(this) == DialogResult.OK) { //赋值 } f.Dispose(); C#中windows窗体应用程序连接ACCESS 关于应用程序获取传值的问题。 string 类型转换为toolstripmenuitem类型,紧急求助各位大侠,先谢谢了 请教愚翁大哥一个文件下载进度条问题 postback!!!高手帮我! 关于windowsservice定时执行的问题 oracle 索引 -1 出错问题 请问:如何将空值写入BLOB,sql语句如何写 参数化问题。请各位兄弟帮我看看。谢谢!!! 托管非托管的概念如何清楚划分的,有何意义。 问一个IP地址的小问题!! dataGridView只显示最后一行文件,怎么回事?
对同一页或不同页的多个请求维护状态和页信息,不同的方法有不同的作用和适用场合。大致上有以下方法:
Cookie
Session
Application
Cache
隐藏域/ViewState/ControlState
Profile
QueryString
跨页提交
各种状态管理方法的对比如下:
存储位置 类型限制 大小限制 适用对象 使用范围 过期策略 安全性
Cookie 客户端Cookie文件夹 字符串 每个4K 单个用户 当前请求上下文 绝对时间过期 低
Session-InProc 客户端Cookie和Web服务器内存 任何类型 受内存限制 单个用户 当前请求上下文 平滑时间过期 比较高
Session-StateServer 客户端Cookie和Windows服务所在服务器内存 可序列化类型 受内存限制 单个用户 当前请求上下文 平滑时间过期 比较高
Session-SqlServer 客户端Cookie和SQL Server服务器硬盘 可序列化类型 受数据库限制 单个用户 当前请求上下文 平滑时间过期 比较高
Application Web服务器内存 任何类型 受内存限制 所有用户 当前请求上下文 应用程序结束则无效 高Cache Web服务器内存 任何类型 受内存限制 所有用户 当前请求上下文 平滑时间过期、绝对时间过期、依赖过期 高
ViewState 页面隐藏域 可序列化类型 受表单提交大小限制 单个用户 当前页面 页面关闭则无效 比较低
Profile 客户端Cookie和数据库 可序列化类型 受数据库限制 单个用户 当前请求上下文 Cookie过期时间或者长期存在 比较高
Querystring 页面URL 字符串 不超过2K 单个用户 当前页面 页面关闭则无效 低一般来说,QueryString和Session是用得比较多的。
http://hi.baidu.com/satdown/blog/item/fde4015508f750c2b645aeaf.html
子页定义个public变量 或者子页类的构造函数带参数的
1.cookie 受限程度大,易丢失
2.session 使用方便,易丢失
3.viewstate
4.application 受内存限制,个人平时很少用
5.Querystring 暴露参数,要适当做处理,自我感觉好用
6.hidden 表单隐藏域个人而言:QueryString和Session是用得较多
人家楼主问的是C/S结构的!
winform!!---------------------------
To:楼主,
一般采用对窗体的构造函数的改写,
通过改写构造函数,传递参数给另外一个窗体,达到窗体之间传递值的目的。
C/S结构?页面之间?如果是C/S结构就该说是窗体之间
页面之间是对网页说的,那是B/S结构,
楼主先确定一下是C/S的还是B/S的?
人家楼主问的是C/S的
1、先在Form2中定义一个成员变量和一个属性如下:
private string form2zhi = null;
public string Form2ChuanZhi
{
get
{
return form2zhi;
}
}
2、再在Form3中定义一个成员变量和一个属性如下:
private string form3zhi = null;
public string Form3ChuanZhi
{
set
{
form3zhi = value;
}
get
{
return form3zhi;
}
}
3、以上基本已经搞定了,为了能够实现这个传值看的清楚一点,我在Form2加了一个bunton命名为btn_ChuanZhi
4、双击btn_ChuanZhi在这个事件中写入以下代码(主要是显示Form3窗体和将Form2中的值传过去):
Form3 form3 = new Form3();
form3.Form3ChuanZhi = form2zhi;//将值传过去
form3.Show();
5、在Form3中托一个Label控件,并双击Form3窗体Form3_Load事件中写入以下代码:
label1.Text = form3zhi;//为了显示值已经传过来了
6、这个运行是没错误了,但在Form3还不能看到传过来的值。下面来给Form2中的form2zhi赋值就可以了。
双击Form2窗体在Form2_Load中写入以下代码即可实现:
form2zhi = "将我传过去!"; 好了到目前为止不同窗体间的传值已经实现了。以上方法对所有窗体都可用,不管是子窗体与主窗体之间还是子窗体与子窗体之间都可以。
B/S 一般用的有 查询字符串,Session ,Appllicaiton,上下文,知道这些就可以了
(以下用窗体Form2和窗体Form3为例)
1、先在Form2中定义一个成员变量和一个属性如下:
private string form2zhi = null;
public string Form2ChuanZhi
{
get
{
return form2zhi;
}
}
2、再在Form3中定义一个成员变量和一个属性如下:
private string form3zhi = null;
public string Form3ChuanZhi
{
set
{
form3zhi = value;
}
get
{
return form3zhi;
}
}
3、以上基本已经搞定了,为了能够实现这个传值看的清楚一点,我在Form2加了一个bunton命名为btn_ChuanZhi
4、双击btn_ChuanZhi在这个事件中写入以下代码(主要是显示Form3窗体和将Form2中的值传过去):
Form3 form3 = new Form3();
form3.Form3ChuanZhi = form2zhi;//将值传过去
form3.Show();
5、在Form3中托一个Label控件,并双击Form3窗体Form3_Load事件中写入以下代码:
label1.Text = form3zhi;//为了显示值已经传过来了
6、这个运行是没错误了,但在Form3还不能看到传过来的值。下面来给Form2中的form2zhi赋值就可以了。
双击Form2窗体在Form2_Load中写入以下代码即可实现:
form2zhi = "将我传过去!"; 好了到目前为止不同窗体间的传值已经实现了。以上方法对所有窗体都可用,不管是子窗体与主窗体之间还是子窗体与子窗体之间都可以。 from2向from1传值将from1的FormBorderStyle属性设为FixedDialog在form1的按钮click事件写
from2 f = new from2();
if (f.ShowDialog(this) == DialogResult.OK)
{
//赋值
}
f.Dispose();