如何写出优雅的代码?

everything is null
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

今天在开发中遇到这样一个问题,用户打开一个页面,页面中只有一个表格,因为页面以对话框的形式体现,用户从中选取一条记录,然后将相关数据返回给父页面,对话框自动关闭。
针对这个问题,直观能想到的解决方案是,在子页面也就是对话框窗口中用Response.Write输出脚本,或通过RegisterStartupScript注册脚本,这部分应该是没有什么问题,但在实际使用过程中发现,当在子窗体中点击选中也就是返回按钮时,页面会刷新,并也没有任何值返回。在查了相关的资料后,在孟子的博客上找到一篇文章,他的方法是在父窗体和子窗体之间加了一层过渡窗体,过渡窗体没有任何内容而是一个框架。他的解释是:“为了防止提交时打开新页面”。因此我猜测,按钮在提交后应该是已经关闭了当前窗体,但是服务器后来又返回了一个窗体,所以感觉上子窗体刷新后没有关闭。
下面是示例代码:
1.父窗体:
         function check()
       {
               //方法用来创建一个显示HTML内容的模态对话框。(跳转到新页面)
               var myFormula = window.showModalDialog(encodeURI("Middle.aspx"),null,"dialogWidth=325px;dialogHeight=220px;status=no");
               //alert(myFormula);
               document.getElementById("tb").value=myFormula;              
       }
2.中间过渡窗体
<frameset rows="0,*">
    <frame src="about:blank">
    <frame src="Child.aspx">
 </frameset>
3.子窗体
         string serverValue = this.TextBox1.Text;
        StringBuilder strScript = new StringBuilder();
        strScript.Append("<script language='javascript'>");
        strScript.Append("window.parent.returnValue='" + serverValue + "';");
        strScript.Append("window.parent.close();");
        strScript.Append("</script>");

        if (!this.IsStartupScriptRegistered("close"))
        {
            this.RegisterStartupScript("close", strScript.ToString());
        }