【原创摘要】ASP.NET中在网页间传递数据的一些并不常见的方法
一、使用Server.Transfer在页面间传递数值
首先假设我们需要从sender.aspx传递数据到receiver.aspx
1、在sender.aspx.cs中定只读属性
private FormSender frmSender;
4、然后在receiver.aspx.cs的Page_Load事件中对frmSender进行初始化
frmSender = Context.Handler as FormSender;

Assert.IfNull(frmSender, "传递数据失败");
5、在receiver中引用就非常简单了
二、使用客户端脚本传递数据
假设我们在Opener.aspx中使用javascript:window.open('popupWin.aspx')方法打开popupWin.aspx页面并在popupWin中设置了一些值,然后再将这些数据回传给Opener.aspx并关闭popupWin.aspx
1、在popupWin.aspx中加入脚本,其中的txtReceiver1和txtReceiver2就是Opener.aspx中用于接收数据的控件
2、在popupWin.aspx提交事件中调用这段脚本就可以回传数据了
首先假设我们需要从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、然后提交数据
public string TextBoxValue
{
get{return txtSender.Text.Trim();}
}
//也可以传递整个Form
public NameValueCollection FormData
{
get{return Request.Form;}
}
private void btnSubmit_Click(object sender, EventArgs e)
{
Server.Transfer("receiver.aspx");
}
{
Server.Transfer("receiver.aspx");
}
3、在receiver.aspx.cs中,首先声明Sender类的实例
private FormSender frmSender;
frmSender = Context.Handler as FormSender;
Assert.IfNull(frmSender, "传递数据失败");lblText.Text = frmSender.TextBoxValue;
lblTextBox.Text = (frmSender.FindControl("txtSender") as TextBox).Text.Trim();
lblForm.Text = frmSender.FormData["txtSender"].ToString();
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>
<!--
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));
}
}
{
if(!IsClientScriptBlockRegistered("Test")
{
RegisterClientScriptBlock("Test", string.Format("<script language=javascript>SetValue('{0}','{1}');</script>", txtSender1.Text, txtSender2.Text));
}
}
浙公网安备 33010602011771号