我有一个ASP.NET的linkbutton控件在我的表单上。我想在客户端使用它进行javascript操作,并防止它向服务器提交表单。(我想使用linkbutton控件是为了能够样式定制和某些情况下禁用它,所以直接使用a标签并不是首选方法)。
如何防止它向服务器提交表单?
我有一个ASP.NET的linkbutton控件在我的表单上。我想在客户端使用它进行javascript操作,并防止它向服务器提交表单。(我想使用linkbutton控件是为了能够样式定制和某些情况下禁用它,所以直接使用a标签并不是首选方法)。
如何防止它向服务器提交表单?
ASPX 代码:
<asp:LinkButton ID="someID" runat="server" Text="clicky"></asp:LinkButton>
代码后台:
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
someID.Attributes.Add("onClick", "return false;");
}
}
HTML 渲染结果如下:
<a onclick="return false;" id="someID" href="javascript:__doPostBack('someID','')">clicky</a>
在这种情况下,onclick功能变成了您的验证器。如果为false,则不会执行“href”链接; 但是,如果为true,href将被执行。这样可以消除您的后退。
这个回答可能听起来不太有用......但是为什么你要在纯客户端操作时使用 LinkButton 呢?请使用标准的 HTML 锚元素,并将其 onclick
操作设置为您的 JavaScript。
如果您需要服务器生成该链接的文本,请使用 asp:Label
作为锚点开始和结束标记之间的内容。
如果您需要根据服务器端代码动态更改脚本行为,请考虑使用 asp:Literal
技术。
但是,除非您从 LinkButton 的 Click 事件执行服务器端活动,否则在此处使用它似乎没有太多意义。
你也可以做到
...LinkButton ID="BtnForgotPassword" runat="server" OnClientClick="ChangeText('1');<b>return false"</b>...
它会阻止链接按钮的后台提交(postback)
只需将href设置为“#”
<asp:LinkButton ID="myLink" runat="server" href="#">Click Me</asp:LinkButton>
我认为你应该考虑使用超链接控件。它是一个服务器端控件(所以你可以从代码中操纵可见性等),但它省略了常规的锚标签并且不会引起提交回发。
我曾经遇到过这个问题,正确的做法是使用以下两步:
OnClientClick
return false
例如下面这行代码:
<asp:LinkButton ID="lbtnNext" runat="server" OnClientClick="findAllOccurences(); return false;" />
在C#中,你可以这样做:
MyButton.Attributes.Add("onclick", "put your javascript here including... return false;");
return false
与asp:LinkButton
无法配合使用,请使用:href="javascript: void;"
或者
href="#"
除了OnClientClick="return false;"
之外
<asp:LinkButton ID="linkPrint" runat="server" CausesValidation="False" href="javascript: void;"
OnClientClick="javascript:self.print();return false;">Print</asp:LinkButton>
不要实现属性:
public partial class _Default : System.Web.UI.Page{
protected void Page_Load(object sender, EventArgs e)
{
someID.Attributes.Add("onClick", "return false;");
}}
使用:
OnClientClick="return false;"
你尝试过使用OnClientClick
吗?
var myLinkButton = new LinkButton { Text = "Click Here", OnClientClick = "JavaScript: return false;" };
<asp:LinkButton ID="someID" runat="server" Text="clicky" OnClientClick="JavaScript: return false;"></asp:LinkButton>