在各种各样的新闻组中,我看到很多人都在问一个问题。在ASP.NET的Server side编程中,我怎么样去打开一个新窗口啊?以前,大家都是用client side script来做的,现在,我们应该怎样去做呢?

其实道理很简单,我们还是在使用client side script。只不过有一点需要变化的是,在服务器端怎么render出客户端的script来?秘密就在。。。

呵呵,对了,RegisterStartupScript和RegisterClientScriptBlock。很多人听说过这两个函数,可是怎么用,却还是不太清楚,下面通过这两段代码来实现在server side code中打开一个窗口,希望对大家有所帮助。

1)把下列代码放到一个control的事件处理函数中去,比如说一个button的click事件

string sURL = @"http://www.xxx.com/sub-dir/page-name.aspx"; //自己写想要的URL吧

StringBuilder sbScript = new StringBuilder();
StringBuilder sbFeatures = new StringBuilder();

//设置要打开窗口的格式,大小
sbFeatures.Append("left=0,top=0,width=300,height=300,");
sbFeatures.Append("menubar=yes,resizable=yes,scrollbars=yes,");
sbFeatures.Append("status=yes,titlebar=yes,toolbar=yes");

sbScript.Append(" \n");

RegisterStartupScript("PopupWindowScript1", sbScript.ToString());

2)另外一种方法,在Page_Load里面写代码,然后动态attach给button的click事件。

sbScript.Append(" \n");

RegisterClientScriptBlock("PopupWindowScript2", sbScript.ToString());
Button1.Attributes.Add("onclick", "JavaScript:OpenAPopup()");

注:本文并未提到RegisterClientScriptBlock和RegisterStartupScript,在本文中,这两个函数出现的地方是可以通用的,希望没有把大家搞糊涂,呵呵