<ASP:LinkButton> でのポストバックを無効にする
-
05-07-2019 - |
質問
フォームに 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の場合、&quot; href&quot;リンクは実行されません。ただし、trueの場合、hrefは実行されます。これにより、ポストバックがなくなります。
他のヒント
役に立たない答えのように聞こえるかもしれません...しかし、なぜ純粋にクライアント側の何かに LinkButton を使用するのでしょうか?標準の HTML アンカー タグを使用し、そのアンカー タグを設定します。 onclick
JavaScript に対するアクション。
サーバーにそのリンクのテキストを生成させる必要がある場合は、 asp:Label
アンカーの開始タグと終了タグの間のコンテンツとして。
サーバー側のコードに基づいてスクリプトの動作を動的に変更する必要がある場合は、次のことを検討してください。 asp:Literal
テクニックとして。
ただし、LinkButton の Click イベントからサーバー側のアクティビティを実行しない限り、ここでこれを使用する意味はあまりないようです。
あなたもできます
...LinkButton ID="BtnForgotPassword" runat="server" OnClientClick="ChangeText('1');return false"...
そして、リンクボタンポストバックを停止します
href =&quot;#&quot;を設定するだけ
<asp:LinkButton ID="myLink" runat="server" href="#">Click Me</asp:LinkButton>
HyperLinkコントロールを使用して調査する必要があると思います。これはサーバー側のコントロールです(したがって、コードから可視性などを操作できます)が、通常のol 'アンカータグは省略され、ポストバックは発生しません。
C#では、次のようにします。
MyButton.Attributes.Add("onclick", "put your javascript here including... return false;");
数分前にこれを行っただけで、正しい方法は使用です
-
OnClientClick
-
Return False()
次のコード行の例:
<asp:LinkButton ID="lbtnNext" runat="server" OnClientClick="findAllOccurences(); return false();" Visible="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 タグ内
onclickイベントでjavascript関数を呼び出します。
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>
他にできること、スクロール位置を保持したい場合はこれ:
<asp:LinkButton runat="server" id="someId" href="javascript: void;" Text="Click Me" />
クライアント側の関数が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 =&quotを実行することを心配する必要はありません。 ; javascript:void(0);&quot;トリック。
空のajax更新パネルを使用して、linkbuttonのクリックイベントを配線しないのはなぜですか?この方法では、更新パネルのみが更新されるため、ポストバックが回避され、javascriptを実行できます
このようなことをしている人はいないようです:
createEventLinkButton.Attributes.Add("onClick", " if (this.innerHTML == 'Please Wait') { return false; } else { this.innerHTML='Please Wait'; }");
これが機能する唯一の方法のようです。
jquery ready関数では、次のようなことができます-
var hrefcode = $('a[id*=linkbutton]').attr('href').split(':');
var onclickcode = "javascript: if`(Condition()) {" + hrefcode[1] + ";}";
$('a[id*=linkbutton]').attr('href', onclickcode);
ページの更新を回避するには、 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>
上記のコードは、ページを更新せずにブラウザーの print を呼び出します。
aspリンクの代わりにhtmlリンクを使用し、サーバー側のhtmlリンクの間にラベルを使用できます コントロール