禁用<asp:linkbutton> </asp:linkbutton>上的回发

时间:2008-10-07 00:41:48

标签: asp.net asplinkbutton

我的表单上有一个ASP.NET链接按钮控件。我想在客户端将它用于javascript,并防止它回发到服务器。 (我想使用linkbutton控件,因此我可以在某些情况下对其进行换肤并禁用它,因此不首选直接标记。)

如何阻止它回发到服务器?

17 个答案:

答案 0 :(得分:61)

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将被执行。这消除了你的回复。

答案 1 :(得分:37)

这听起来像是一个无用的答案......但是为什么你使用LinkBut​​ton作为纯粹的客户端?使用标准HTML锚标记并将其onclick操作设置为您的Javascript。

如果您需要服务器生成该链接的文本,请使用asp:Label作为锚点的开始和结束标记之间的内容。

如果您需要根据服务器端代码动态更改脚本行为,请将asp:Literal视为一种技术。

但是,除非你从LinkBut​​ton的Click事件进行服务器端活动,否则在这里使用它似乎没什么意义。

答案 2 :(得分:25)

你也可以这样做

...LinkButton ID="BtnForgotPassword" runat="server" OnClientClick="ChangeText('1');return false"...

它会停止链接按钮回发

答案 3 :(得分:14)

只需设置href =“#”

即可
<asp:LinkButton ID="myLink" runat="server" href="#">Click Me</asp:LinkButton>

答案 4 :(得分:6)

我认为你应该调查使用HyperLink控件。它是服务器端控件(因此您可以通过代码操纵可见性等),但它省略了常规的ol'锚标记,并且不会导致回发。

答案 5 :(得分:4)

在C#中,你会做这样的事情:

MyButton.Attributes.Add("onclick", "put your javascript here including... return false;");

答案 6 :(得分:3)

在几分钟之前完成了这个,正确的方法是使用

  1. OnClientClick
  2. Return False()
  3. 如以下示例代码行:

    <asp:LinkButton ID="lbtnNext" runat="server" OnClientClick="findAllOccurences(); return false();" Visible="false"/>
    

    刚刚从我的工作代码中复制了该行。

答案 7 :(得分:2)

而不是实现属性:

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:LinkBut​​ton标签内

答案 8 :(得分:1)

你可以做的其他事情,如果你想保留你的滚动位置是这样的:

<asp:LinkButton runat="server" id="someId" href="javascript: void;" Text="Click Me" />

答案 9 :(得分:1)

在onclick事件上调用javascript函数。

答案 10 :(得分:1)

您是否尝试过使用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>

答案 11 :(得分:0)

为避免刷新页面,如果return falseasp: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>

以上是代码将调用浏览器的打印内容,而不刷新页面。

答案 12 :(得分:0)

在jquery ready函数中,您可以执行以下操作 -

var hrefcode = $('a[id*=linkbutton]').attr('href').split(':');
var onclickcode = "javascript: if`(Condition()) {" + hrefcode[1] + ";}";
$('a[id*=linkbutton]').attr('href', onclickcode);

答案 13 :(得分:0)

为什么不使用空的ajax更新面板并将linkbutton的click事件连接到它?这样只会更新更新面板,从而避免回发并允许您运行您的javascript

答案 14 :(得分:0)

似乎没有人这样做:

createEventLinkButton.Attributes.Add("onClick", " if (this.innerHTML == 'Please Wait') { return false; } else {  this.innerHTML='Please Wait'; }");

这似乎是唯一可行的方式。

答案 15 :(得分:0)

您可能还希望客户端函数返回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>

我使用可点击类来设置指针,颜色等等,使其外观类似于锚标记,但我不必担心它会被回发或不得不做href =“的javascript:无效(0);”特技。

答案 16 :(得分:-1)

使用html链接而不是asp链接,你可以在服务器端的html链接之间使用标签 控制