【原创摘要】ASP.NET中在网页间传递数据的一些并不常见的方法

 一、使用Server.Transfer在页面间传递数值
首先假设我们需要从sender.aspx传递数据到receiver.aspx
1、在sender.aspx.cs中定只读属性
//可以只传递一个控件的数值
public string TextBoxValue
{
    
get{return txtSender.Text.Trim();}
}

//也可以传递整个Form
public NameValueCollection FormData
{
    
get{return Request.Form;}
}
2、然后提交数据
private void btnSubmit_Click(object sender, EventArgs e)
{
    Server.Transfer(
"receiver.aspx");
}

3、在receiver.aspx.cs中,首先声明Sender类的实例

private FormSender frmSender;
4、然后在receiver.aspx.cs的Page_Load事件中对frmSender进行初始化
frmSender = Context.Handler as FormSender;

Assert.IfNull(frmSender, 
"传递数据失败");
5、在receiver中引用就非常简单了
lblText.Text = frmSender.TextBoxValue;

lblTextBox.Text 
= (frmSender.FindControl("txtSender"as TextBox).Text.Trim();

lblForm.Text 
= frmSender.FormData["txtSender"].ToString();

二、使用客户端脚本传递数据
假设我们在Opener.aspx中使用javascript:window.open('popupWin.aspx')方法打开popupWin.aspx页面并在popupWin中设置了一些值,然后再将这些数据回传给Opener.aspx并关闭popupWin.aspx
1、在popupWin.aspx中加入脚本,其中的txtReceiver1和txtReceiver2就是Opener.aspx中用于接收数据的控件
<SCRIPT LANGUAGE="javascript"> 
<!-- 
    function writeBackToOpener(v1, v2)
    {
        
if(v1 != "" && v2 != "")
        {
            var r1 
= opener.document.all("txtReceiver1");
            var r2 
= opener.document.all("txtReceiver2");
            
            
if(r1)
            {
                r1.value 
= v1;
            }
            
            
if(r2)
            {
                r2.value 
= v2;
            }
        }
        
        window.close();
    }
--> 
</SCRIPT> 

2、在popupWin.aspx提交事件中调用这段脚本就可以回传数据了
private void btnSubmit_Click(object sender, EventArgs e)
{
    
if(!IsClientScriptBlockRegistered("Test")
    {
        RegisterClientScriptBlock(
"Test"string.Format("<script language=javascript>SetValue('{0}','{1}');</script>", txtSender1.Text, txtSender2.Text));
    }

posted on 2006-06-20 16:04  Shadower  阅读(426)  评论(0)    收藏  举报

导航