asp.net子窗体与父窗体交互实战分享
在一个典型的Web应用项目中,我们遇到了一个涉及到两个页面交互的问题,分别是Default.aspx作为父页面和Default2.aspx作为子页面。这种交互的实现主要依赖于window.returnValue的应用,并非特定于asp的技术。为了更好地理解并记录下这个简单的实现模型,我将其详细阐述如下。
我们先来了解一下涉及的两个页面。在Default.aspx这个父页面上,有两个TextBox和一个Button。用户的交互主要在这个页面上完成。当点击Button时,会触发一段JavaScript代码,这段代码的功能是弹出一个子页面Default2.aspx并接收其返回值。
Default.aspx页面的HTML和服务器端的代码大致如下:
```html
```
```csharp
// Button的Click事件处理函数
protected void Button1_Click(object sender, EventArgs e)
{
StringBuilder s = new StringBuilder();
s.Append("");
// 注册这段JavaScript代码到客户端
Type cstype = this.GetType();
ClientScriptManager cs = Page.ClientScript;
string sname = "startupScript";
if (!cs.IsStartupScriptRegistered(cstype, sname))
cs.RegisterStartupScript(cstype, sname, s.ToString());
}
```
这段代码中,关键的`window.showModalDialog('Default2.aspx')`语句负责弹出子页面Default2.aspx,并等待用户操作完成后的返回值。
接着我们跳转到子页面Default2.aspx。这个页面包含一个TextBox和一个Button。在这个页面上用户可以输入一些信息,然后点击Button进行提交。提交后,页面会返回一个值到父页面Default.aspx。值得注意的是,在Default2.aspx的head部分加入的`
我们看到在Default2.aspx页面的HTML代码中,有一个文本框和一个按钮。用户在文本框中输入值后,点击按钮会触发Button1_Click事件。
在Button1_Click事件的后台代码中,我们创建了一个StringBuilder对象来构建一个JavaScript脚本。这个脚本包含了一个window.returnValue变量,它的值是通过GetSelectValue()方法获取的。脚本还包含了window.close()方法,用于关闭当前窗口。然后,我们将这个脚本注册为启动脚本,以便在页面加载时执行。
实验步骤如下:
1. 打开Default1.aspx页面,在id为a1的TextBox中输入数字55,然后点击Button。会跳转到Default2.aspx页面。
2. 在Default2.aspx页面的弹窗中输入数字66,点击子窗体的按钮关闭子窗体。在此过程中,通过脚本将值传递给父页面。
3. 查看结果。我们可以看到,父页面中的值(先前输入的55)被保留了下来,并且接收了从子窗体传递过来的值(66)。
这个过程就像是一场数据的“接力赛”,先在父页面传递一个值到子页面,然后在子页面输入新的值并传递回父页面,实现了数据的双向传递。这种交互方式在Web开发中非常常见,特别是在需要用户输入并反馈结果的场景中。通过这种方式,我们可以为用户提供更好的交互体验,使页面更加灵活和动态。这就是我们在Default2.aspx页面的Button_Click事件中使用的技术,它使得网页之间的数据交互变得更加简单和直观。
编程语言
- asp.net子窗体与父窗体交互实战分享
- AngularJS下$http服务Post方法传递json参数的实例
- Easyui在treegrid添加控件的实现方法
- 使用PHP开发留言板功能
- 解析WordPress中的post_class与get_post_class函数
- 如何得到数据库中所有表名 表字段及字段中文描
- Angular中支持SCSS的方法
- PHP生成随机密码4种方法及性能对比
- 浅析JavaScript事件和方法
- Yii框架getter与setter方法功能与用法分析
- 密码强度的正则表达式两种方案JS总结篇
- JS创建对象几种不同方法详解
- ROW_NUMBER SQL Server 2005的LIMIT功能实现(ROW_NUMBER()排序
- Asp.net中安全退出时清空Session或Cookie的实例代码
- JS使用ActiveXObject实现用户提交表单时屏蔽敏感词
- Angular5升级RxJS到5.5.3报错:EmptyError- no elements in