2010-08-18 8 views
0

나는 ASP.NET 사이트를 가지고 있으며 jGrowl을 사용하여 사용자에게 알림을 표시하고 있습니다. 이 기능은 사용자가 동일한 페이지에 머물러있을 때 유용하지만 사용자를 리디렉션하는 경우 어떻게됩니까?Response.Redirect 다음에 함수 호출하기

예를 들어, AddPerson.aspx는 새 사람을 추가하기위한 페이지입니다. 사람이 추가 된 후 사용자는 People.aspx로 리디렉션됩니다. Josh Smith가 추가되었습니다. '라는 알림을 표시하고 싶습니다.'

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를 한 후이를 호출 할 수

저는 현재 자바 스크립트를 실행하는 내 마스터 페이지에 기능이?

답변

3

Response.Redirect는 페이지에서 처리를 종료하고 ThreadAbort 예외를 throw합니다. Response.Redirect 뒤에는 호출 할 수 없습니다. 이전에 전화를 걸거나 리디렉션 할 페이지의 첫 번째 항목이되도록하십시오.

The documentation에 따르면 endResponse 매개 변수의 값을 false로 설정할 수 있으며 코드 실행을 계속할 수 있지만 실제로는 가끔씩 작동하고 다른 코드는 작동하지 않는 것으로 나타났습니다. 이것은 문서 작업을 신뢰하지 않는 드문 경우 중 하나이며, 실제로 나중에 리디렉션하는 것은 대개 내가 원하는 것입니다.

0

짧은 대답은 당신이 할 수 없다는 것입니다. 리디렉션 후 페이지가 더 이상 실행되지 않습니다.

리디렉션 전에 쿠키 또는 세션 변수를 설정하면 people.aspx 페이지에서 쿠키 또는 세션 변수를 감지하고 함수가 설정되어 있으면 호출 할 수 있습니다 (이 지점을 지우는 것을 잊지 마세요) .

0
Response.Redirect(newUri, false); 
//stuff needed to be done before ending the handling here. 
ApplicationInstance.CompleteRequest(); 

는 일반적으로하지만, 저는 제가 301, 303, 307 또는 (거의) 302 Response.Redirect를이하지 않습니다할지 여부를 명확하게 할 수 있습니다 내 자신의 리디렉션을 사용합니다.

0

사용자가 최근에 추가 된 페이지에 "알리는"옵션이 하나 있습니다. 예를 들어 URL에 무언가를 넣어 신호를 보내거나 세션에 무엇인가 배치 할 수 있습니다. 그런 다음 People.aspx를 렌더링하여 해당 값을 확인하여 다른 사람이 방금 추가되었는지 확인한 후 알림을 표시합니다.

관련 문제