3

我在 asp.net 中有一个名为Home.aspx的页面。它使用母版页,并且还有一个正在调用的按钮:

Response.Write("<script> window.open('page2.aspx','_blank'); </script>")

结果:新标签页打开page2.aspx,如果返回Home.aspx,页面布局被修改,中心<div>移动到页面左侧。

我能做些什么来解决这个问题?请记住,这只发生在 Internet Explorer 上,Firefox 可以正常工作!

非常感谢。

4

3 回答 3

2

不讨论你为什么这样做的优点,你Response.Write可能会杀死 Home.aspx 页面中的 HTML/CSS/JS 输出并阻止它正确加载。尝试使用:

ScriptManager.RegisterStartupScript(typeof(Page),
            "OpenPage2", "window.open('page2.aspx','_blank');", true);

而不是 Response.Write,所以一旦页面加载它就会打开你的窗口。

于 2013-08-07T19:38:57.950 回答
1

通常,如果您想从ScriptManager背后的代码编写脚本,那是您的朋友。启动脚本在预渲染之后发生,卸载脚本在关闭时发生,您可以根据调整大小等事件设置它们。

您的 div 移动与翻页有关,而不是特定按钮的服务器代码。使用

    <script language="javascript" type="text/javascript">
        function mybutton() {
            window.open('page2.aspx', '_blank');
            return false;
        }
    </script>

在您的按钮 asp 标记中使用 onclientclick="mybutton" 可以避免这种情况下的回发。除此之外,您可能有不正确的 css 或在翻页时触发的代码,一旦您回发,它们仍然会移动您的 div。

于 2013-08-07T21:16:47.307 回答
1

如果有人会发现它有用,这是对我有用的确切答案:

http://www.schnieds.com/2008/06/css-lost-on-postback-in-aspnet.html

所以,在 OP 的情况下,而不是

Response.Write("<script> window.open('page2.aspx','_blank'); </script>")

那会起作用:

        String myScript = "<script> window.open('page2.aspx','_blank'); </script>";
        Page.ClientScript.RegisterStartupScript(this.GetType(), "myScript", myScript);
于 2015-02-05T15:32:57.830 回答