ASP:按钮里面的asp:超链接不会转到页在Internet Explorer

问题描述:

我有一个asp:按钮,是一个ASP内部:超链接。当你点击Firefox中的按钮时,它会转到由asp:超链接指定的正确url,但是如果你点击Internet Explorer中的按钮,它将保持在同一页面上。我只是用PostBackUrl属性上的按钮来解决问题,但这里是代码的一个例子:ASP:按钮里面的asp:超链接不会转到页在Internet Explorer

<asp:Hyperlink ID="hyp" runat="server" NavigateUrl="Page2.aspx"> 
<asp:Button ID="btn" runat="server" Text="Submit" /></asp:Hyperlink> 

为什么在firefox上述工作,但不是IE浏览器?

+0

为什么你有按钮的方式吗? – 2009-03-02 17:51:44

+0

我会说你真的想询问如何风格的超级链接为一个按钮 – eglasius 2009-03-02 17:53:58

+0

我造型的按钮,但我的问题是为什么在firefox上述工作,但不是在IE浏览器。 – Xaisoft 2009-03-02 17:59:05

你所做的不是很正确。

只需添加按钮,并在其单击处理程序做:

Response.Redirect("Page2.aspx"); 

或者,你可以写一行JavaScript代码:

<input type="button" value="Text" onclick="location='Page2.aspx'" /> 

你的按钮被执行在同一页上回发。如果我是你,我会尝试在HTML工具箱中使用标准按钮,而不是ASP.NET按钮。

编辑:我会更强烈建议您消除按钮控制和适当的造型超链接,或消除双方并使用hyperlinkbutton控制来代替,而有其显示属性设置为显示为一个按钮。

+0

为什么它工作在Firefox,而不是IE单一的控制? – Xaisoft 2009-03-02 17:53:16

是否有一个理由,为什么你正在使用内部按钮超链接?根据您正在尝试才达到我将只使用一个按钮或一个LinkBut​​ton设计,然后做一个重定向你的逻辑后的代码隐藏

<asp:Button runat='server' id='button1' Text='Click Me' Click='button1_Click' /> 
<asp:LinkButton runat='server' id='linkbutton1' Text='Click Me' Click='button1_Click' /> 

代码隐藏

protected void button1_Click(object sender, EventArgs e) { 
    // some logic 
    Response.Redirect("Page2.aspx"); 
} 

火狐vs Internet Explorer

由于事件在b和b之间冒泡/传播的方式,我怀疑您的Firefox和Internet Explorer之间存在差异rowsers。如果你想取消事件的传播,你需要在你的按钮点击事件处理程序(在javascript中)包含对event.preventDefault()或event.stopPropagation()的调用?

我会用一个<asp:LinkButton CssClass="myButton" OnClick="Redirect" />然后CSS样式它,你怎么想它的外观和代码隐藏处理功能。演示,标记和功能的

protected void Redirect(object sender, EventArgs e) 
{ 
    // do something 
} 

三通分离 - 在我看来去