Asp按钮无需提交即可打开新页面

时间:2016-09-13 22:21:47

标签: asp.net

我有弹出按钮的aspx脚本:

<asp:Button ID="btnNewEntry" Text="Post Code Search" OnClick="btnNewEntry_Click" runat="Server" target="_blank"/>

后面:

protected void btnNewEntry_Click(object sender, EventArgs e)
{


 ClientScript.RegisterStartupScript(this.Page.GetType(), "", "window.open('../search/postcode_search/Default.aspx?code="+ p +"','Post Code Search','width=800,height=300,left=100,top=100,resizable=yes'); popup_handle.focus();", true);

}

但是,当单击该按钮时,将打开弹出窗口但刷新父页面。为什么会这样?任何解决方法?

4 个答案:

答案 0 :(得分:1)

当向服务器发出请求时页面被刷新,并且像Button这样的服务器控件默认具有属性AutoPostback = true,这意味着无论何时单击它们都将进行服务器之旅。为插入按钮设置AutoPostback = false,这将为您提供帮助。

 or     

Add OnClientClick="return false;" ,

<asp:button ID="btninsert" runat="server" text="Button" OnClientClick="return false;" />

答案 1 :(得分:1)

或许对代码实际发生的事情进行一些解释会有所帮助。我们已经讨论了自动回发,因此您知道单击该按钮会将事件发送回服务器。页面再次初始化并重新加载视图状态和所有发布的数据。之后,处理按钮单击事件。

此时,您的代码将window.open脚本写入页面。请记住,这不是具体的。这只是在页面上添加一些并执行的脚本。然后更新视图状态,并将页面发送回客户端。如果用户重新加载页面,那么该脚本将再次执行。

您最好的选择是将其转换为客户端按钮。在加载弹出窗口之前,找一种从服务器获取必要数据的方法。最简单的方法是进行AJAX调用,并在终点打开弹出窗口。

答案 2 :(得分:0)

试试这个。更新一个。

<asp:Button ID="btnNewEntry" Text="Post Code Search" OnClick="btnNewEntry_Click" runat="Server" target="_blank"
OnClientClick="javascript:window.open('../search/postcode_search/Default.aspx?code=+ p','Post Code Search','width=800,height=300,left=100,top=100,resizable=yes').focus();return false;"/>

问题是由于“+ p +”。

答案 3 :(得分:0)

据我所知,我决定去客户端。这是我的剧本:

<button  onclick="OpenPopup()" type="button">Post Code Search</button>

和它上面的javascript代码:

    <script>

 function OpenPopup() {
    var getQueryString = function ( field, url ) {
    var href = url ? url : window.location.href;
    var reg = new RegExp( '[?&]' + field + '=([^&#]*)', 'i' );
    var string = reg.exec(href);
    return string ? string[1] : null;
};
var str = getQueryString('code');
    if (str != null) {
    p = str.replace(/%20/g, ' ');
        }
    else { 
    p = "";
    }
    var url = "../search/postcode_search/Default.aspx?code=" + p;
    window.open(url, "Post Code Search", "toolbar=no, location=no,status=yes,menubar=no,scrollbars=yes,resizable=no, width=750,height=400,left=430,top=100");
    return false;
    }


</script>

所以基本上它做了什么,它从父窗口url抓取参数并添加到弹出窗口url。我的父窗口网址:

/Customer.aspx?code=V6E%20111&firstname=MyName

我希望它对其他人也有帮助。谢谢你的帮助。