0

ASP.NET を使用してサイトを実装していますが、フォームを送信するときにユーザーにフィードバックを提供するための助けが必要です。

詳細ビューを使用して、ユーザーに必要なデータを挿入させますが、挿入が成功または失敗したときにユーザーにフィードバックを提供したい場合。したがって、挿入が成功した場合は、JS 関数を実行して成功通知を表示し、それ以外の場合はエラー通知を表示します。

使ってみた

OnInserted="areaInsertHandler"

SQL データ ソースで、次を使用して例外を確認します。

protected void areaInsertHandler(Object sender, SqlDataSourceStatusEventArgs e)
    {
        if (e.Exception != null)
        {
            // There was an error in submitting, show the error notification
            ClientScript.RegisterClientScriptBlock(GetType(), "DialogHandler", "showError();", true);
            e.ExceptionHandled = true;
        }
        else
        {
            // Show success 
            ClientScript.RegisterClientScriptBlock(GetType(), "DialogHandler", "showSuccess();", true);
        }
    }

しかし、私が送信すると、どちらの機能も起動していないようです。ブラウザーのデバッガーを使用すると、JS 関数も入力されていないため、呼び出されていないようです。VS デバッガーを使用すると、ハンドラーが実際に呼び出され、ClientScript コードが実行されることがわかります。そのため、ブラウザーで何も起こらない理由がわかりません。

違いがある場合、詳細ビューは updatepanel 内にあります。

問題へのアプローチ方法に関するフィードバックやその他の提案をいただければ幸いです。

敬具

4

1 に答える 1

0

解決しました。他の誰かが同様の問題に遭遇した場合に備えて、この答えをここに残しておきます。

問題は、フォームの周りでupdatepanelを使用していたことです。つまり、ページが通常の意味で再読み込みされないため、ヘッダーにスクリプトを追加できません。代わりに、サイトをリロードせずにボディの一部のみを置き換える部分的なポストバックを使用しています。

解決策は、次のように、clientscriptではなくscriptmanagerにスクリプトを登録することです。

ScriptManager.RegisterClientScriptBlock(Page, GetType(), "DialogHandler", "showError();", true);

簡単=)

于 2012-09-28T09:49:58.720 に答える