0

リンクにfacebox プラグインを使用しています が、onClick で何かしたいこともあります。

ここに画像の説明を入力

onclick イベントを実行してみました:( リテラルを使用して実行していますが、これが問題なのかもしれません)

litWorkplaceButton.Text = "<a class='google-button' href=\"#dialog-form\" id='btnSaveForLater' rel='facebox' onclick=\"addSaveList\" runat='server'>Save for later</a>";

しかし、次のエラーが表示されます。

'addSaveList' is undefined

そして、私は私の方法を次のように定義しますvoid protected addSaveList(){}

プロジェクトの ID をテーブルに保存したいだけなので、ページの後ろにコードを書く必要があります。

<asp:LinkButton>(コードビハインドで)および通常のリテラルを使用しようとしましたが、エラー結果は次のことを示しました:

<asp:LinkButton ID="searchLinkk" runat="server" onclick="searchLink_Click">Search</asp:LinkButton>

<a id="CPHcontent_searchLinkk" href="javascript:__doPostBack(&#39;ctl00$CPHcontent$searchLinkk&#39;,&#39;&#39;)">Search</a>

通常だったものを href="javascript:__doPostBack" のタグに変換

ただし、イベントが発生した場合 (ユーザーがログインしている場合) にのみこのボタンを表示するため、リテラルを使用する必要があります。

それを行う別の方法はありますか、それとも何か間違っていますか?

4

3 に答える 3

2

ここでの問題は、のプロパティaを介してページに挿入しているタグがサーバー コントロールとして認識されないことです。属性は JavaScript イベントとして認識されています。LiteralTextOnClick

ユーザーがログインしていない場合は、引き続き使用してLinkButton、単にVisibleプロパティを設定することができます。コードビハインドのPage_Loadメソッドに次のようなものを入れます。

searchLinkk.Visible = User.IsAuthenticated;

于 2012-09-16T17:22:31.157 に答える
1

あなたの問題は、リテラル コントロールの目的を誤解していることです。テキスト/html をページに挿入するためだけに使用することを意図しており、サーバー コントロールを動的に追加するために使用することはできません。そのためには、プレースホルダー コントロールを使用する必要があります。

'addSaveList' is undefinedブラウザが「onclick」属性(多くの理由で使用すべきではない)を検出するとaddSaveList、存在しないと呼ばれるグローバル Javascript メソッドにバインドしようとするため、エラーが発生します。

于 2012-09-16T17:19:12.437 に答える
0

はい、インラインJSを使用しないでください。これは、セマンティクスが悪いため、常に戻ってきて悩まされます。代わりに、スクリプトを別のスクリプトファイルに入れ、ヘッダーにリンクして、これを含めます。

$(document).ready(function() {

   // Put your method here

});

幸運、-
ブライアン

于 2012-09-16T14:57:42.540 に答える