[英]Disable the postback on an <ASP:LinkButton>
我的表单上有一个 ASP.NET 链接按钮控件。 我想在客户端将它用于 javascript 并防止它回发到服务器。 (我想使用链接按钮控件,以便我可以在某些情况下为其设置外观并禁用它,因此不推荐使用直接标记)。
如何防止它回发到服务器?
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”链接; 然而,如果它是真的,href 将被执行。 这消除了您的回帖。
这听起来可能是一个无用的答案......但是为什么您将 LinkButton 用于纯粹的客户端? 使用标准的 HTML 锚标记并将其onclick
操作设置为您的 Javascript。
如果您需要服务器生成该链接的文本,则使用asp:Label
作为锚点的开始和结束标记之间的内容。
如果您需要根据服务器端代码动态更改脚本行为,请考虑将asp:Literal
作为一种技术。
但是,除非您从 LinkButton 的 Click 事件执行服务器端活动,否则在这里使用它似乎没有多大意义。
你也可以
...LinkButton ID="BtnForgotPassword" runat="server" OnClientClick="ChangeText('1');return false"...
它停止链接按钮回发
只需设置 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;" />
我认为您应该使用 HyperLink 控件进行调查。 它是一个服务器端控件(因此您可以从代码中操纵可见性等),但它省略了常规的 ol' 锚标记并且不会导致回发。
在 C# 中,你会做这样的事情:
MyButton.Attributes.Add("onclick", "put your javascript here including... return false;");
而不是实现属性:
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;"
在 asp:LinkButton 标签内
为避免页面刷新,如果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>
以上代码将调用浏览器打印而不刷新页面。
如果您想保留滚动位置,您可以做的其他事情是:
<asp:LinkButton runat="server" id="someId" href="javascript: void;" Text="Click Me" />
在 onclick 事件上调用 java 脚本函数。
您是否尝试过使用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>
在 jquery 就绪函数中,您可以执行以下操作 -
var hrefcode = $('a[id*=linkbutton]').attr('href').split(':');
var onclickcode = "javascript: if`(Condition()) {" + hrefcode[1] + ";}";
$('a[id*=linkbutton]').attr('href', onclickcode);
似乎没有人这样做:
createEventLinkButton.Attributes.Add("onClick", " if (this.innerHTML == 'Please Wait') { return false; } else { this.innerHTML='Please Wait'; }");
这似乎是唯一有效的方法。
为什么不使用一个空的 ajax 更新面板并将链接按钮的点击事件连接到它? 这样只会更新更新面板,从而避免回发并允许您运行 javascript
您可能还希望客户端函数返回 false。
<asp:LinkButton runat="server" id="button" Text="Click Me" OnClick="myfunction();return false;" AutoPostBack="false" />
您还可以考虑:
<span runat="server" id="clickableSpan" onclick="myfunction();" class="clickable">Click Me</span>
我使用 clickable 类来设置指针、颜色等内容,使其外观类似于锚标记,但我不必担心它会被发回或必须执行 href="javascript:void (0);" 诡计。
使用 html 链接而不是 asp 链接,您可以在 html 链接之间使用标签进行服务器端控制
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.