在Page_Load中用Response.Write写入javascript脚本!

解决方案 »

  1.   

    或者使用RegisterClientScriptBlock例子:<script language="C#" runat="server">    public void Page_Load(Object sender, EventArgs e) {      // Form the script that is to be registered at client side.
          String scriptString = "<script language=JavaScript> window.open(……)<";
          scriptString += "/";
          scriptString += "script>";           if(!this.IsClientScriptBlockRegistered("clientScript"))
                 this.RegisterClientScriptBlock("clientScript", scriptString);
        }     </script>
      

  2.   

    感谢您使用微软产品。在一个web页面中打开另一个页面,可以通过多种方式来实现。这里提供其中的一种方法。
    如下是一段完整的示例代码,供您参考:
    <html>
    <head>
         <script language="C#" runat="server">
            void Page_Load(Object Src, EventArgs E) {
    button1.Attributes.Add("onclick","javascript:window.open('test.aspx')");
            }
        </script>
    </head>
        <body>
           <h3>Open a new window</h3>
           <p>
           <form runat="server">
        <asp:button id="button1" text="Open New Window" runat="server" />
       </form>
        </body>
    </html>
    希望这些对您有帮助。 — 微软全球技术中心 VB支持中心本贴子以“现状”提供且没有任何担保,同时也没有授予任何权利。具体事项可参见使用条款(http://support.microsoft.com/directory/worldwide/zh-cn/community/terms_chs.asp)。
    为了为您创建更好的讨论环境,请参加我们的用户满意度调查(http://support.microsoft.com/directory/worldwide/zh-cn/community/survey.asp?key=(S,49854782))。
      

  3.   

    谢谢大家,看了大家的回复,都是用教本javascript,,其实我的意思是说既然可以通过response.write引导到一个页面,难道就不能通过服务端代码打开新窗体吗?
      

  4.   

    请问 ,那关闭是不是就是把
    button1.Attributes.Add("onclick","javascript:window.open('test.aspx')");变成,"javascript:window.close('test.aspx')");?
      

  5.   

    既然服务器端代码能够重定向网页(Redirect),那我想,应该能够实现新开或者关闭窗口。
    如果服务器端代码由于技术原因连新开浏览器窗口这样的基本功能都实现不了,那它就应该受到疑问。这种服务器端的代码方式究竟在功能上能不能和Java的客户端虚拟机方式相抗衡。
    希望微软技术支持给予解释。
      

  6.   

    我看了好多的贴子,都是用javascript写,asp.net中的Redirect不能实现新开一页,只能用控件来实现,例如hyperlink控件,
    <asp:HyperLink id="hyperlink1" 
                      ImageUrl="images/pict.jpg"
                      NavigateUrl="http://www.microsoft.com"
                      Text="Microsoft Official Site"
                      Target="_blank"
                      runat="server"/>
      

  7.   

    关注:这种服务器端的代码方式究竟在功能上能不能和Java的客户端虚拟机方式相抗衡。
    希望微软技术支持给予解释。
      

  8.   

    好像都不会用服务端代码新开一页,难道不行?
    acptvb(微软全球技术中心 VB技术支持)能给个明确回答吗?反正你又不负法律责任!!!呵呵
      

  9.   

    从安全角度来看,好像服务器端脚本是不能提供自动在客户端打开页面的功能的。如果提供了,那么服务器端就可以通过在客户端打开不同页面来执行相应的功能,是对客户机端安全的严重危害。
        不知道,这么想对不对,我刚开始用donnet的时候也想打开新窗口,可惜一直不知道如何。只有通过javascript或是链接
      

  10.   

    我们来看微软的例子,如果在以下事例中,点击按钮能打开一个新窗口,并将button的显示值传入新窗口,该如何写,谢谢
    <html>
    <head>
     
        <script language="C#" runat="server">        void Page_Load(Object Sender, EventArgs e) {            if (!Page.IsPostBack) {                ArrayList values = new ArrayList();                values.Add(new PositionData("Microsoft", "Msft", "150 共享"));
                    values.Add(new PositionData("Intel", "Intc", "25 共享"));
                    values.Add(new PositionData("Dell", "Dell", "115 共享"));                repeater1.DataSource = values;
                    repeater1.DataBind();
                }
            }        void Repeater1_ItemCommand(object sender, RepeaterCommandEventArgs e) {            lblResult.Text = "<u>命令</u>为:<b>" + e.CommandName + "</b>,<u>命令参数</u>为:<b>" + e.CommandArgument + "</b>";
    }        public class PositionData {            private string name;
                private string ticker;
                private string shares;            public PositionData(string name, string ticker, string shares) {
                    this.name = name;
                    this.ticker = ticker;
                    this.shares = shares;
                }            public string Name {
                    get {
                        return name;
                    }
                }            public string Ticker {
                    get {
                        return ticker;
                    }
                }            public string Shares {
                    get {
                        return shares;
                    }
                }
            }    
        <h3><font face="宋体">在列表中冒泡按钮单击</font></h3>
        <p></p>    <form runat=server>
          <font face="宋体" size="-1">        <asp:Repeater id=repeater1 onitemcommand="Repeater1_ItemCommand" runat="server">            <ItemTemplate>
                    <asp:Button id=btnBuy Text="买" CommandName="买" CommandArgument='<%# DataBinder.Eval(Container.DataItem, "Ticker") %>' runat="server" />                &nbsp;&nbsp;                <asp:Button id=btnSell Text="卖" CommandName="卖" CommandArgument='<%# DataBinder.Eval(Container.DataItem, "Shares") %>' runat="server" />                &nbsp;&nbsp;                <asp:Label id=lblCompany Text='<%# DataBinder.Eval(Container.DataItem, "Name") %>' Font-Bold="true" runat=server />                <p>            </ItemTemplate>        </asp:Repeater>        <asp:Label id=lblResult runat="server" />      </font>
        </form></body>
    </html>
      

  11.   

    只能用Javascript来实现,Server端实现的话不安全
    button.Attributes.Add("onclick","javascript:window.open('newwindow.aspx')");