0

javascriptの確認ボックスからC#関数を呼び出す方法を理解しようとしています。つまり、ユーザーが「OK」を選択すると関数が呼び出され、ユーザーが「キャンセル」を選択すると別の関数が呼び出されます。すべてのコードはバックページにあり、次のようになります。

Response.Write(@"
    <script language='javascript'>
    var msg=confirm('Your new document has been created.\nPress OK to go there now, or Cancle to create another document.');
    if (msg==true) {<%=redirect()%>;}
    else {<%=clearForm()%>;}
    </script>
");

protected void redirect(object sender, EventArgs e)
{
    Response.Redirect("myPage.aspx");
}

protected void clearForm(object sender, EventArgs e)
{
    //More code here//
}

Response.Redirect内のすべてのコードがすべて1行にあることに注意してください。簡単にするために、ここで分割します。とにかく、これはうまくいきません、そして私は解決策を見つけることができません。if私は声明の中でさまざまなことを試しました

私の最初のアイデアは、ユーザーにオプションを提供するのではなく、単に次を使用することでした。

Response.Write(@"<script language='javascript'>alert('Your new document has been created.');</script>");
Response.Redirect("TaskPanel.aspx");

しかし、これを試したところ、ページはユーザーが[OK]をクリックするのを待たずにリダイレクトされたため、意味がありませんでした。

4

3 に答える 3

3

サーバー側とクライアント側のコードの間で混乱しています。提示した C# コードがサーバー上で実行され、ページに JavaScript コードが書き込まれます。

<script language='javascript'>
    var msg=confirm('Your new document has been created.\nPress OK to go there now, or Cancle to create another document.');
    if (msg==true) {<%=redirect()%>;}
    else {<%=clearForm()%>;}
</script>

書き出す JavaScript は、クライアント側のブラウザーで実行されます。

ただし、サーバー側で実行する必要がある ASPX スクリプトレット コードを書き出そうとするため、JavaScript エラーが発生すると思います<%=redirect()%>;(<%=clearForm()%>;ただし、実際にはクライアントの JavaScript で文字列として表示されます)。 .

これは、JavaScript から直接 C# 関数を呼び出すことができない理由に対する単なる説明/回答です。

特定の問題については、サーバーにコールバックしてリダイレクトまたはクリア フォームを実行する必要はありません。

これらは両方とも JavaScript で実行できます。

リダイレクトは JavaScriptwindow.location="myPage.aspx"またはself.location="myPage.aspx"

クリアフォームは JavaScript で実行できます form.reset()

于 2013-01-31T20:52:21.243 に答える
1

はい、単純です:コールバック関数をファイルに入れます

その後、[ OK ] をクリックしてバインド する必要があります。関数を次のように呼び出します。

OK キャンセル

$("#OK,#Cancel").click(function(){

 var whichFct = $(this).attr('fct');      var urlToFile = "web/app/link/fct/1";
 if(whichFct == 2)  urlToFile = "web/app/link/fct/2"

   $.post(urlToFile,function() {
            //do sthlike hiding the form ...
       });
});

これよりも単純です

于 2013-01-31T21:06:36.903 に答える
0

ボタンクリックで JavaScript 関数を渡します。次に、.aspx ページに次のコードを記述します。

<script language='javascript'>
function func_name()
{
var msg=confirm('Your new document has been created.\nPress OK to go there now, or Cancle to create another document.')
if (msg==true) {<%=redirect()%>}
else {<%=clearForm()%>}
}
</script>

他のボタンについても同様に行います。

于 2013-02-01T08:33:20.137 に答える