如何将值从模态对话框传递到父页面

时间:2013-06-12 14:11:14

标签: asp.net popup modal-dialog

我正在使用asp.net创建一个网站。如果用户单击登录链接,我将调用模式对话框。

这是我的showModalDialog脚本。

<li><a onclick="popup()"href="#">LOGIN</a></li>


 <script type="text/javascript">
 function popup() {
     var style = 'dialogWidth:350px;dialogHeight:100px;dialogleft:200px;dialogtop:200px;status:no;help:no;';
     var respond = window.showModalDialog("login.aspx", this, '', style);

 }

登录页面包含用户名和密码的文本框以及登录按钮的按钮。检查数据库中的用户名和密码后,我的问题是如何使用后面的代码(.cs)将值从弹出页面传递给父页面(布尔和字符串数据类型)。如果在将值传递给父页面后可以,则如果boolean = true,则将加载成员资格页面。

提前致谢。

1 个答案:

答案 0 :(得分:1)

你能否将后面代码中的布尔值暴露为属性,然后你可以直接写入页面,即

window.returnValue = '<%=MyPublicProperty%>;'

当呈现页面时,该属性将是任何其他javascript引用,即

window.returnValue = 'thePropertyValue';

因此模态对话框返回类型将反映代码背后的内容

另一种变体是使用ClientScript对象将变量后面的代码写入标记,以便客户端可以从模态对话框返回

ClientScript.RegisterClientScriptBlock(this.GetType(), "example", 
string.Format("var codeBehindProperty = '{0}';", MyPublicProperty), true);

希望有意义

修改

要检索该信息,它应该是showModalDialog调用的返回值。所以在你的例子中

 var respond = window.showModalDialog("login.aspx", this, '', style);

变量respond将包含codeBehindProperty。如果您单步执行代码,则在打开模式时执行将在showModalDialog暂停。当它关闭时,继续执行,然后在父页面中提供返回值。