0

ASP.NET サイトがあり、jGrowl を使用してユーザーに通知を表示しています。これは、ユーザーが同じページにとどまっている場合はうまく機能しますが、ユーザーをリダイレクトしている場合はどうでしょう。

たとえば、AddPerson.aspx は新しい人を追加するためのページです。ユーザーが追加されると、ユーザーは People.aspx にリダイレクトされます。「Josh Smith が追加されました。」という通知を表示したいと思います。

現在、マスターページにJavaScriptを実行する関数があります:

public void DisplayNotification(string html, string header)
{
    string text = "\"" + html + "\"";
    string options = "{ header: '" + header + "', life: 6000 }";

    string scriptJGrowl = "$.jGrowl(" + text + ", " + options + ");";
    ScriptManager.RegisterStartupScript(Page, GetType(), Guid.NewGuid().ToString(), scriptJGrowl, true);
}

Response.Redirect の後にこれを呼び出すにはどうすればよいですか?

4

4 に答える 4

3

Response.Redirect はページでの処理を終了します (そして ThreadAbort 例外をスローします)。Response.Redirect の後で呼び出すことはできません。前に呼び出すか、リダイレクト先のページの最初に呼び出します。

ドキュメントには、endResponse パラメーターの値を false に設定して、コードの実行を続行できると書かれていますが、実際には、それが機能することもあれば、機能しないこともあります。これは私がドキュメンテーションを信頼しないまれなケースの 1 つであり、実際には、後でリダイレクトすることがとにかく私が望んでいることです。

于 2010-08-18T20:44:01.203 に答える
0

必要なオプションの 1 つは、ユーザーが最近追加されたことをページに「通知」することです。たとえば、これを知らせるために URL に何かを配置したり、セッションに何かを配置したりできます。次に、People.aspx をレンダリングするときに、その値をチェックして、誰かが追加されたかどうかを確認します。追加された場合は、通知を表示します。

于 2010-08-19T01:08:59.153 に答える
0

短い答えは、できないということです。リダイレクト後、ページは実行されなくなります。

より長い答えは、リダイレクトの前に Cookie またはセッション変数を設定すると、people.aspxページでそれを検出し、設定されている場合は関数を呼び出すことができるということです (この時点でクリアすることを忘れないでください)。

于 2010-08-18T20:46:07.063 に答える
0
Response.Redirect(newUri, false);
//stuff needed to be done before ending the handling here.
ApplicationInstance.CompleteRequest();

ただし、通常は、301、303、307、または (まれに) 302 Response.Redirect が必要かどうかを明確にする独自のリダイレクトを使用します。

于 2010-08-18T20:58:33.910 に答える