Asp.net页面之间通过脚本传递数据.doc
需积分: 0 59 浏览量
更新于2007-09-05
收藏 26KB DOC 举报
在Asp.net中,页面间的数据传递通常有多种方法,如使用Query String、Session、View State、Cookies等。然而,当需要在不刷新整个页面的情况下传递数据时,可以通过客户端脚本(JavaScript)来实现。以下将详细介绍如何在Asp.net页面之间通过脚本传递数据。
创建一个名为`WebForm1.aspx`的页面,它包含一个TextBox控件(用于输入数据)和一个Button控件(触发脚本事件)。在`Page_Load`事件处理程序中,我们编写代码来注册客户端脚本。这段代码会创建一个JavaScript函数`OpenWin()`,当点击Button时调用此函数,打开一个模态对话框(modal dialog):
```csharp
private void Page_Load(object sender, System.EventArgs e)
{
if (!Page.IsClientScriptBlockRegistered('clientScript'))
{
StringBuilder sbScript = new StringBuilder();
sbScript.Append('<script>\n');
sbScript.Append('function OpenWin(){\n');
sbScript.Append('var str=window.showModalDialog(\'WebForm2.aspx\',document.Form1.txtWndName.value)\n');
sbScript.Append('if(str!=null) document.Form1.txtWndName.value=str\n');
sbScript.Append('}\n</script>\n');
string script = sbScript.ToString();
RegisterClientScriptBlock('clientScript', script);
}
this.btnOpen.Attributes.Add('OnClick', 'OpenWin()');
}
```
这里,`OpenWin`函数使用`window.showModalDialog`方法打开`WebForm2.aspx`,并将TextBox的值作为参数传递。当模态对话框关闭时,如果返回值不为空,则将其赋值回TextBox。
接着,创建`WebForm2.aspx`页面,它包含一个嵌套的框架集(frameset)。这个框架集有两个框架,顶部的框架为空,底部的框架加载`WebForm3.aspx`。这样,用户在`WebForm3.aspx`中的操作可以影响`WebForm2.aspx`,从而间接影响`WebForm1.aspx`:
```html
<frameset rows='0,*'>
<frame src='about:blank' />
<frame src='WebForm3.aspx'></frameset>
```
然后,创建`WebForm3.aspx`页面,它接收`WebForm1.aspx`传递的数据,并在`Page_Load`事件中,根据页面是否为PostBack来决定是否注册JavaScript脚本。这段脚本将TextBox1的文本作为返回值,关闭当前窗口,并将其传递回`WebForm1.aspx`:
```csharp
private void Page_Load(object sender, System.EventArgs e)
{
if (Page.IsPostBack)
{
StringBuilder sbScript = new StringBuilder();
sbScript.Append('<script>\n');
sbScript.Append('window.parent.returnValue='' + this.TextBox1.Text + ''\n');
sbScript.Append('window.parent.close()\n');
sbScript.Append('</script>\n');
string script = sbScript.ToString();
if (!Page.IsClientScriptBlockRegistered('clientScript'))
{
RegisterClientScriptBlock('clientScript', script);
}
}
}
```
在这个过程中,`window.parent`是父窗口的引用,即`WebForm2.aspx`。通过设置`window.parent.returnValue`,我们可以将数据返回到`WebForm2.aspx`,进而传递回`WebForm1.aspx`。
这个例子展示了如何利用JavaScript的模态对话框和窗口对象属性进行页面间的非刷新数据传递。这种方式在某些场景下非常有用,比如需要保持用户界面的状态而不重新加载整个页面。但需要注意的是,这种方法仅适用于简单的数据传递,对于复杂的数据结构或大量数据,可能需要考虑其他更高效的方法,如服务器端的Session或ViewState。

Jacky_dev
- 粉丝: 7
最新资源
- 机械学院机械设计制造及其自动化专业培养方案三学期制用.doc
- 人工神经网络绪论专家讲座.pptx
- 人事发卡软件使用说明.doc
- 中医科学院无线网络覆盖施工方案样本.doc
- 2023年互联网竞赛策划.doc
- 网络营销知识产品管理层次.pptx
- 网络工程设计CH9.pptx
- 系统集成与综合布线工程监理.ppt
- 工业机器人离线编程ABB5-5-创建工具.pptx
- 网络系统安全评估及高危漏洞ppt(精品文档).ppt
- 无限极网络直销好做吗.ppt
- 设施农业自动化实施方案.ppt
- 项目管理的通俗例子[最终版].pdf
- 数据库课程设计任务书扉及格式说明计算机.doc
- 最新国家开放大学电大《物流管理基础答案》网络核心课形考网考作业.docx
- 无线传感器网络54930.ppt