我有一个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?
答案 0 :(得分:7)
你做的不是很正确。
只需添加按钮并在其点击处理程序中执行:
Response.Redirect("Page2.aspx");
或者你可以写一行javascript:
<input type="button" value="Text" onclick="location='Page2.aspx'" />
答案 1 :(得分:1)
您是否有理由在超链接中使用按钮?根据您尝试实现的设计,我只使用Button或LinkButton,然后在代码隐藏中的逻辑之后进行重定向
<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
}
演示,标记和功能的三种分离是我认为的方式