需要在asp和aspx页面间传值或相互调用值,但需传递的值涉及重要信息(如用户名或密码等)
请问:使用什么方法传值才能较安全呀?
困惑呀,求解。

解决方案 »

  1.   

    session也可以考虑一下,用完删除session
      

  2.   

    3种处理这方面问题的方法:
    1.利用querystring
    2.利用session
    3.利用Server.Transfer()方法
    利用querystring
    这中方法的优点是实现起来很简单,但是缺点是传递的数据会显示在浏览器的地址兰中,并且这种方法不能传递对象。当你只需要传递很少的数据且这些数据对别人来说是不需要保密的时候,这种方法就最适合了。它的实现要遵从以下几个步骤:* 创建一个web窗体
    * 创建一个button或link button
    * 在button的click事件中创建一个string对象,其值是另一个页面的URL
    * 将控件的值作为参数付给url
    * Response.Redirect(URL)定位到其他的页面代码的例子如下:
    源页面设定要传送的数据:private void Button1_Click
    (object sender, System.EventArgs e)
    {
    string url;
    url="anotherwebform.aspx?name=" + 
    TextBox1.Text + "&email=" + 
    TextBox2.Text;
    Response.Redirect(url);
    }
    目标页面中获得传送来的数据:
    private void Page_Load
    (object sender, System.EventArgs e)
    {
    Label1.Text=Request.QueryString["name"];
    Label2.Text=Request.QueryString["email"];
    }
    利用Session 变量
    将控件的值存储在session变量中从而在页面之间传递。但是要注意不能在session中存储过多的数据,否则服务器会不堪重负。另外不再需要的seesion变量应及时地清理掉。它的实现要遵从以下几个步骤:
    * 首先创建一个web窗体
    * 创建button或link button
    * 在button的click事件中创建一个seesion变量并且将要传递的控件的值赋给它
    * Response.Redirect()定位到目的页面
    * 在目的页面中访问seesion 变量获得传递的数据,如果不再需要就清除掉代码的例子如下:
    源页面设定要传送的数据:
    private void Button1_Click
    (object sender, System.EventArgs e)
    {
    //textbox1 and textbox2 are webform
    //controls
    Session["name"]=TextBox1.Text;
    Session["email"]=TextBox2.Text;
    Response.Redirect("anotherwebform.aspx");
    }
    目标页面中获得传送来的数据:
    private void Page_Load
    (object sender, System.EventArgs e)
    {
    Label1.Text=Session["name"].ToString();
    Label2.Text=Session["email"].ToString();
    //不再需要就清除掉
    Session.Remove("name");
    Session.Remove("email");
    }
     利用Server.Transfer(url)
    这个方法比上面两种方法要复杂一些,它的实现需要给page类定义一些额外的属性(property)。首先将要传递的数据定义成页面的属性,然后在目的页面中通过源页面的实例来访问。这种方法很值得采用,因为它是面向对象的而且比之前的两种方法更清晰一些。它的实现要遵从以下几个步骤:
    * 首先还是创建web窗体
    * 创建属性,设定get方法用来返回要传送的数据
    * 创建button来发送页面
    * 在button的click事件中调用Server.Transfer(url)方法定位到目的页面
    * In the second form you can get a reference to the first form instance by using Context.Handler property. 在目的页面中利用Context.Handler 创建一个对源页面实例的引用,然后用这个引用就可以访问源页面的属性,从而获得要传送的数据Then you will use the get properties we created to access the control values. 代码的例子如下:
    源页面设定要传送的数据:在源页面(eg: WebForm1)中添加属性
    public string Name
    {
    get
    {
    return TextBox1.Text;
    }
    }public string EMail
    {
    get
    {
    return TextBox2.Text;
    }
    }
    然后调用Server.Transfer(url)方法定位到目的页面
    private void Button1_Click
    (object sender, System.EventArgs e)
    {
    Server.Transfer("anotherwebform.aspx");
    }
    目标页面中获得传送来的数据:
    private void Page_Load
    (object sender, System.EventArgs e)
    {
    //创建源web页的实例
    WebForm1 wf1;
    //获得引用
    wf1=(WebForm1)Context.Handler;
    Label1.Text=wf1.Name;
    Label2.Text=wf1.EMail;
    }