2017-04-10 8 views
1

私はC#の詳細な知識がないフロントエンドの開発者ですので、私の多分愚かな疑問をお許しください。私は現在、一般的なJavaScript alert()とconfirm()ボックスを置き換えるためにjQuery UI Dialogを使用しようとしています。これはフロントエンドでうまくいきましたが、C#のページの1つでこのスニペットが見つかりました。これをconfirm()からjQueryダイアログ()に切り替える最良の方法がわかりません。何か案は?C#コード内でconfirm()の代わりにjQuery dialog()を使用するには?

string delCode = "javascript:" 
    + "if (confirm(\'Are you sure you wish to delete this?\')){ " 
    + this.Page.ClientScript.GetPostBackEventReference(this, string.Empty) 
    + ";} else { return false; }"; 

EDIT: より少し周りを演奏した後、私はそれがボタンをクリックしたときにポストバックを防止するOnClientClick属性を追加せずに動作しないこと、が分かりました。この属性をのコードの中のに追加するにはどうすればよいですか? btnDelete.Attributes.Add( "OnClientClick"、 "foo"); は私にとっては機能しません。これを解決する正しい方法は何ですか?悲しいことに https://jsfiddle.net/SchweizerSchoggi/xts01hrx/16/

+0

それは.aspxか.cshtmlですか? Web-FormsかMVC/Web-Apiかを判断する。 – Greg

+0

javacript変数に 'this.Page.ClientScript.GetPostBackEventReference(this、string.Empty)'の出力を保存し、他の場所で同じことをしてください。 – charlietfl

+0

@Greg、それは.aspx – SchweizerSchoggi

答えて

1

、JavaScriptをプッシュする:ここで私が持っていたいものイスト

が、それはこれまでの単純なJSをだ(あなたは、C#はフィドル内のHTMLコンテンツの上、コメントとしてボタンのスニペットを参照します) Web-Formの中のサーバーからクライアントへ、実装する必要がある現在のコードを利用する必要があります。多くの場合、過剰なポストバックの問題を避けるために、フォーム送信を無効にするために、 LinkButtonのようなサーバー側のコントロールを強制します。

<asp:LinkButton id="lbExample" runat="server" OnClientClick="launch(); return false;" Text="Launch Dialog" /> 

<script type="text/javascript"> 
    function launch() { 
      $('[data-rel="Example-Modal"]').dialog({ 
       // Dialog logic. 
      } 
    } 
</script> 

このようにすると、Webページやシングルページアプリケーションで従来のJavaScriptのように動作します。上記のコードに基づいた正式な文書は、正しい追加機能ですが、hereで見つけることができます。あなたは上記の示すように、あなたの唯一のオプションは、動的に追加します。

ClientScript.RegisterOnSubmitStatement(this.GetType(), "ConfirmSubmit", jQuery); 

あなたは、単に背後にあるコードから、progmaticallyボタンを作成したり、ページ内のボタンを見つけるだろう。私は作成を使用して、私が何を意味するかを表示します:

public void Page_Load(...) 
{ 
    var lb = new LinkButton(); 
    lb.OnClientClick = "launch();" 
} 
+0

大丈夫ですだから、これを試してみてください - 少なくとも、私たちにとっては、少なくとも私たちのために、これは「読みやすく」なるかもしれません。フロントエンドの人;-) Thx Greg、正しい方法で私を押し付けてくれました! – SchweizerSchoggi

+1

@SchweizerSchoggiええ、フロントエンドの場合は、それを行う方が良いです。そうしないと、フロントエンドとバックエンドの状態が一致しなくなります。これはあなたのためのビットを分離しようとします。あなたがたくさんのCSSクラスを使いたいのでない限り、Web-FormsはJavaScriptでかなりラフです。また、 'ClientIdMode =" static "もあなたの友人になります。 – Greg

+0

コードビハインド内からOnClientClick属性を追加するにはどうすればよいですか? Attribute.Add( "OnClientClick"、 "foo")は私のためには機能しません.. 私はそれをこのように解決する必要があります。そうしないと、膨大な量のファイルを変更する必要があります。 – SchweizerSchoggi

関連する問題