3

事前に同じタスクを何度も管理しているようです。でも今は一番簡単なことにとことんこだわってしまい、メチャクチャイライラしてしまいました

ASP.Net リンクボタン (またはハイパーリンクは関係ありません) に JavaScript を割り当てる必要があります。

そのようなコードで何十億回もやった

        //lbHeader.Attributes.Add("onclick",
        //    string.Format("ToggleSelectionPopup('{0}');return false;", panelContainer.ClientID));

しかし、うまくいきません。HTML には javascript:__doPostback (blahblahblah) が含まれており、クライアントの "onclick" 関数は無視されます。代わりに、ボタンをクリックするとページがポストバックに移動します(「onclick」機能が「ページソースの表示」HTMLに適切に接続されているにもかかわらず)

次のようないくつかのトリックとアプローチを適用しようとしました

1) LinkBut​​ton を Hyperlink に置き換える - 効果は同じで、href をクリックするとページが「NavigateURL」に転送されます。

2)宣言型レイアウトで「OnClientClick」プロパティを割り当てる - 同じ効果で、ページはとにかくポストバックに移動し、「onclick」を無視します

3) ハイパーリンクの NavigateURL および linkBut​​ton の PostBackURL として "javascript:ToggleSelectionPopup(blahblahblah)" を割り当てます。どちらも機能しません

どちらのトリックも役に立ちませんでした。私は何を間違っていますか、何かアイデアはありますか?

そのコントロールのひどいサーバー パフォーマンスを取り除く必要があるだけですが、どうすればよいでしょうか? 確かに手動で " を使って LiteralControl を作ることはできますが、そんな大雑把なやり方はしたくありません。

高く評価されるヘルプ

4

8 に答える 8

4

LinkBut​​ton コントロールを使用して、JavaScript 関数呼び出しを OnClientClick に追加できます。これは、クライアント側の検証の前とポストバックの前に呼び出されます (明らかに)。検証の後、ポストバックの前にこれを実行する必要がある場合は、「Page_ClientValidate()」を使用して OnClientClick でクライアント側の検証を手動で呼び出すことができます。

<script type="text/javascript">
function someJsYouWant()
{
  alert('HelloSO');
}
</script>

 <asp:LinkButton ID="btnSearch" 
         runat="server"
         OnClientClick="Page_ClientValidate(); someJsYouWant();"
         onclick="btnSearch_OnClick">Search</asp:LinkButton>
于 2009-02-16T15:41:29.187 に答える
1

ASP.NET コントロールの Button と LinkBut​​ton は、常にポストバックを行います。OnClientClick プロパティを使用して追加した JavaScript は、ポストバックの前に実行されますが、ポストバックを妨げません。

代わりに、次の方法で HyperLink コントロールを使用できます。

<asp:HyperLink runat="server" ID="hyperlink1" NavigateUrl="JavaScript:alert('!');">Test</asp:HyperLink>

変数名 lbHeader を使用していることに気付きました。ランダムなラベルではなく、正しいコントロールに JavaScript を追加していますか?

于 2009-02-16T15:28:18.283 に答える
0

私は.NETには興味がないので、Html / Javascript / Ajaxでは間違っているかもしれませんが、onclickの方法を使用する場合、一部のブラウザーでは、:href = "javascript:void(0 ); " 。このように、onclickのみが実行されます。

于 2009-02-16T15:48:25.287 に答える
0

あなたが何をしようとしているのかは少し不明確です。JavaScriptに無効なifステートメントがあります。これを試してください(それは動作します-私はそれを試しました):

hrefHeader.NavigateUrl = String.Format("javascript:toggleSelectionPopup('{0}');", panelContainer.ClientID);
于 2009-02-16T16:13:10.467 に答える
0

"javascript:"文字列の先頭に置くのを忘れましたか? 【バカな私】

この種のものに使用するコードは次のようになります。

myLinkButton.SetAttribute("onclick", "javascript:if(someCondition()) return false;");

...しかし、それは とほとんど同じことをすると思いますAttributes.Add

あなたのコードは私には健全に見えます。私の推測では、ページのライフサイクルで属性が他の何かによって上書きされていると思います。ページの Render にブレークポイントを追加し、そこで LinkBut​​ton の属性コレクションを確認します。また、レンダリングされた HTML をチェックして、JavaScript が表示されているかどうかを確認します。

于 2009-02-16T15:35:57.467 に答える
0

への呼び出しで実行時エラーが発生していませんtoggleSelectionPopupか?

于 2009-02-16T16:34:05.003 に答える
0

オプションとして、HtmlAnchorコントロールを試すことができます。

onclick 属性でfalse を返します。リダイレクトを停止するには十分です。

<a href="not_importans.htm" onclick="javascript:someothermethod();return false;">Trial Link</a>

しかし、あなたのコードは大丈夫です。LinkBut​​ton の HTML 出力をチェックしますか? onclick属性に割り当てられた他のコードかもしれません。

于 2009-02-16T15:30:52.223 に答える
0

みんなありがとう、問題を解決しました

javascript:void(0) は正しい方法のようです。

私のハイパーリンクを次のように説明した

<asp:Hyperlink  ID="hrefHeader" Text="lbHeader" runat="server"  Font-Size="Large" Font-Italic="true" 
 CausesValidation="False"  NavigateUrl="javascript:void(0);" ForeColor="#0033CC" >
</asp:Hyperlink>

「onclick」が発火し始めました。

于 2009-02-17T10:57:59.017 に答える