asp.net 父窗体获取子窗体的返回值,可用来对父窗体局部更新

简介:

asp.net 父窗体获取子窗体的返回值,可用来对父窗体局部更新

今天在项目上遇到了这个问题,其实只是window.returnValue的简单应用,不是asp.net的专属内容。作为积累,记录一个简单的实现模型。

 

2010030821274123.png

图1  用到的文件

   从图1中我们可以看到,只用到了两个页面,其中Default.aspx作为父页面,Default2.aspx作为子页面被弹出。Default.aspx页面上有两个TextBox一个Button,代码如下:

复制代码
 
   
1 <% @ Page Language = " C# " AutoEventWireup = " true " CodeFile = " Default.aspx.cs " Inherits = " _Default " %>
2
3 <! DOCTYPE html PUBLIC " -//W3C//DTD XHTML 1.0 Transitional//EN " " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd " >
4
5 < html xmlns = " http://www.w3.org/1999/xhtml " >
6 < head runat = " server " >
7 < title ></ title >
8
9 </ head >
10 < body >
11 < form id = " form1 " runat = " server " >
12 < div >
13 < asp:TextBox runat = " server " ID = " a1 " >
14 </ asp:TextBox >
15 < asp:TextBox ID = " TextBox1 " runat = " server " ontextchanged = " TextBox1_TextChanged " ></ asp:TextBox >
16 < asp:Button ID = " Button1 " runat = " server " Text = " Button " onclick = " Button1_Click " />
17
18
19 </ div >
20
21 </ form >
22 </ body >
23 </ html >
24
复制代码

 

 

 

在Button1的Click事件中,我们注册弹窗脚本,代码如下:

 

复制代码
 
   
1 protected void Button1_Click( object sender, EventArgs e)
2 {
3 StringBuilder s = new StringBuilder();
4 s.Append( " <script language=javascript> " );
5 s.Append( " var a=window.showModalDialog('Default2.aspx'); " );
6 s.Append( " if(a!=null) " );
7 s.Append( " document.all('TextBox1').value=a; " );
8 s.Append( " </script> " );
9 Type cstype = this .GetType();
10 ClientScriptManager cs = Page.ClientScript;
11 string sname = " lt " ;
12 if ( ! cs.IsStartupScriptRegistered(cstype, sname))
13 cs.RegisterStartupScript(cstype, sname, s.ToString());
14 }
复制代码

 

 

其中  s.Append("var a=window.showModalDialog('Default2.aspx');");一句用来弹窗Default2.aspx页面并接收它的返回值。

接收了返回值之后我们把它赋值给TextBox1.

 

 

 Default2.aspx页面有一个TextBox和一个Button,代码如下:

 (这里需要注意的是在head里的<base target="_self" />标记十分重要。

复制代码
 
   
1 <% @ Page Language = " C# " AutoEventWireup = " true " CodeFile = " Default2.aspx.cs " Inherits = " Default2 " %>
2
3 <! DOCTYPE html PUBLIC " -//W3C//DTD XHTML 1.0 Transitional//EN " " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd " >
4
5 < html xmlns = " http://www.w3.org/1999/xhtml " >
6 < head >
7 < title ></ title >
8 < base target = " _self " />
9 </ head >
10
11 < body >
12 < form id = " form1 " runat = " server " >
13 < div >
14 < asp:textbox runat = " server " ID = " t1 " ></ asp:textbox >
15 < asp:Button ID = " Button1 " runat = " server " Text = " Button " onclick = " Button1_Click " />
16
17 </ div >
18 </ form >
19 </ body >
20 </ html >
21
复制代码

我们在Default2.aspx页面的Button_Click事件中使用脚本返回一个值给父页面。代码如下:

 

复制代码
 
   
1 protected void Button1_Click( object sender, EventArgs e)
2 {
3 StringBuilder s = new StringBuilder();
4 s.Append( " <script language=javascript> " + " \n " );
5 s.Append( " window.returnValue=' " + this .GetSelectValue() + " '; " + " \n " );
6 s.Append( " window.close(); " + " \n " );
7 s.Append( " </script> " );
8 Type cstype = this .GetType();
9 ClientScriptManager cs = Page.ClientScript;
10 string csname = " ltype " ;
11 if ( ! cs.IsStartupScriptRegistered(cstype, csname))
12 cs.RegisterStartupScript(cstype, csname, s.ToString());
13
14 }
复制代码

脚本注册成功之后,我们可以做如下的实验:

1)打开Default1.aspx页面在id为a1的TextBox中输入数字55,然后点击Button

2010030821483634.png

2)在弹窗中输入数字66再点子窗体的按钮关闭子窗体。

2010030821485068.png

3)查看结果

2010030821490296.png

从结果中,我们可以看出我们保留了先输入到父窗体中的值,又接收了从子窗体传递过来的值。

 

 

本文转自悬魂博客园博客,原文链接:http://www.cnblogs.com/xuanhun/archive/2010/03/08/1681089.html,如需转载请自行联系原作者


相关文章
|
开发框架 前端开发 JavaScript
ASP.Net巧用窗体母版页
浏览网站的时候会发现,好多网站中,每个网页的基本框架都是一样的,比如,最上面都是网站的标题,中间是内容,最下面是网站的版权、开发提供商等信息:
ASP.Net巧用窗体母版页
|
开发框架 前端开发 .NET
ASP.NET Core MVC 之局部视图(Partial Views)
ASP.NET Core MVC 之局部视图(Partial Views)1.什么是局部视图   局部视图是在其他视图中呈现的视图。通过执行局部视图生成的HTML输出呈现在调用视图中。与视图一样,局部视图使用 .cshtml 文件扩展名。
1965 0
|
.NET 开发框架 数据安全/隐私保护
|
Web App开发 .NET C#
asp.net中获取Layer弹出层返回值
1、MainPage.aspx中点击按钮利用Layer弹出层,代码如下: $(function () { layer.config({ extend: ['skin/espresso/style.css'], //加载新皮肤 skin: 'layer-ext-espresso' //一旦设定,所有弹层风格都采用此主题。
1279 0
|
Web App开发 缓存 JavaScript
ASP.NET性能优化之局部缓存
在网站的开发过程中,经常碰到的一类需求场景是: 1:页面含热点新闻,热点新闻部分需要10分钟更新一次,而整个页面的其它部分1天内都不会变动; 2:首页的某个BANNER需要显式:欢迎***; 上面场景中的1,如果整个页面的缓存失效都定为10分钟,则势必增加性能开销,所以最好的策略是页面的不同部分采用不同的缓存失效时长。
1334 0
|
JavaScript 前端开发 .NET
【转】了解使用 ASP.NET AJAX 进行局部页面更新
简介 Microsoft的 ASP.NET 技术提供了一个面向对象、事件驱动的编程模型,并将其与已编译代码的优势结合起来。但其服务器端的处理模型仍存在技术本身所固有的几点不足: 进行页面更新需要往返服务器,因此需要页面刷新; 来回往返不会保留 Javascript 或其他客户端技术(如 Adobe Flash)生成的任何效果。
1492 0
|
.NET 开发框架
asp.net 子窗体刷新父窗体
前提:子窗体是由父窗体open出来的 方法:在相关事件里写上window.opener.location=window.opener.location;就搞定了
769 0
|
JavaScript 前端开发 .NET
ASP.NET MVC 重点教程一周年版 第五回 ActionResult的其它返回值
我们上边所看到的Action都是return View();我们可以看作这个返回值用于解析一个aspx文件。而它的返回类型是ActionResult如 public ActionResult Index() { return View(); ...
797 0
|
3月前
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
41 0