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,并继续执行代码,但在实践中,我看到它有时会起作用,而在其他情况下不起作用。这是我不信任文档的极少数情况之一,实际上,无论如何,之后重定向通常是我想要的。

于 2010-08-18T20:44:01.203 回答
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 回答
0

您必须做的一个选择是“通知”页面最近添加了用户。例如,您可以在 URL 中放置一些东西来表示这一点,或者您可以在会话中放置一些东西。然后,当您呈现 People.aspx 时,检查该值以查看是否刚刚添加了某人,如果是,则显示通知。

于 2010-08-19T01:08:59.153 回答