簡體   English   中英

禁用回發<ASP:LinkButton>

[英]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 將被執行。 這消除了您的回帖。

這聽起來可能是一個無用的答案......但是為什么您將 LinkBut​​ton 用於純粹的客戶端? 使用標准的 HTML 錨標記並將其onclick操作設置為您的 Javascript。

如果您需要服務器生成該鏈接的文本,則使用asp:Label作為錨點的開始和結束標記之間的內容。

如果您需要根據服務器端代碼動態更改腳本行為,請考慮將asp:Literal作為一種技術。

但是,除非您從 LinkBut​​ton 的 Click 事件執行服務器端活動,否則在這里使用它似乎沒有多大意義。

你也可以

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

它停止鏈接按鈕回發

只需設置 href="#"

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

剛剛經歷過這個,正確的方法是使用:

  1. OnClientClick
  2. 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:LinkBut​​ton 標簽內

為避免頁面刷新,如果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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM