我的程序是c/s结构?  现在多处用到了页面之间的传递数值?? 请问用那种方法来实现页面之间的传数值效果最好??

解决方案 »

  1.   

    一般来说都是用queryString来传递吧,所有的网站基本上都有queryString。因为都是页面间传递,所以和cs结构无关了。
      

  2.   

    楼主问的应该是状态管理吧?
    对同一页或不同页的多个请求维护状态和页信息,不同的方法有不同的作用和适用场合。大致上有以下方法:
    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是用得比较多的。
      

  3.   

    具体参看:
    http://hi.baidu.com/satdown/blog/item/fde4015508f750c2b645aeaf.html
      

  4.   

    不要用静态变量
    子页定义个public变量  或者子页类的构造函数带参数的
      

  5.   

    反正我传值的时候都是直接在地址栏传值的,然后在用queryString来获取
      

  6.   

    页面传值:
    1.cookie 受限程度大,易丢失
    2.session 使用方便,易丢失
    3.viewstate 
    4.application 受内存限制,个人平时很少用
    5.Querystring 暴露参数,要适当做处理,自我感觉好用
    6.hidden 表单隐藏域个人而言:QueryString和Session是用得较多 
      

  7.   

    楼上的怎么都乱答来着!
    人家楼主问的是C/S结构的!
    winform!!---------------------------
    To:楼主,
    一般采用对窗体的构造函数的改写,
    通过改写构造函数,传递参数给另外一个窗体,达到窗体之间传递值的目的。
      

  8.   

    楼主叙述的问题也有问题吧?
    C/S结构?页面之间?如果是C/S结构就该说是窗体之间
    页面之间是对网页说的,那是B/S结构,
    楼主先确定一下是C/S的还是B/S的?
      

  9.   

    扯蛋的人真多.别人都说了是c/s程序了.搞些web里的方法乐此不彼....
      

  10.   

    我晕倒,看了这个帖子,才知道CSDN里刷分的人这么多
    人家楼主问的是C/S的
      

  11.   

    (以下用窗体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 = "将我传过去!"; 好了到目前为止不同窗体间的传值已经实现了。以上方法对所有窗体都可用,不管是子窗体与主窗体之间还是子窗体与子窗体之间都可以。 
      

  12.   

    C/S 结构的用Get set 访问器就可以了,记住一个值传给其他窗体的控件
    B/S 一般用的有 查询字符串,Session ,Appllicaiton,上下文,知道这些就可以了
      

  13.   

    给人写一个两个窗体之间值的传递的方法,不管对于子窗体还是父窗体都可用.具体代码如下:   //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();