asp:asp内的按钮:超链接无法导航到Internet Explorer中的页面

时间:2009-03-02 17:48:52

标签: c# asp.net

我有一个asp:按钮,它位于asp:超链接中。单击firefox中的按钮时,它将转到asp:超链接指定的正确URL,但如果单击Internet Explorer中的按钮,它将保留在同一页面上。我只是使用按钮上的PostBackUrl属性来解决问题,但这里是代码示例:

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

为什么上面的工作在firefox中,而不是IE?

4 个答案:

答案 0 :(得分:7)

你做的不是很正确。

只需添加按钮并在其点击处理程序中执行:

Response.Redirect("Page2.aspx");

或者你可以写一行javascript:

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

答案 1 :(得分:1)

您是否有理由在超链接中使用按钮?根据您尝试实现的设计,我只使用Button或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");
}

Firefox vs Internet Explorer

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

答案 2 :(得分:0)

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

编辑:我更强烈建议取消您的按钮控件并适当地设置您的超链接样式,或者消除这两者并改为使用超链接按钮控件,并将其显示属性设置为显示为按钮。

答案 3 :(得分:0)

我会使用<asp:LinkButton CssClass="myButton" OnClick="Redirect" />然后使用CSS来设置它的外观以及处理功能的代码隐藏。

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

演示,标记和功能的三种分离是我认为的方式