2011-01-29 3 views
1

내 페이지에서 드롭 다운 목록에서 항목을 선택할 때 usercontrol을로드하는 위치 표시자가 있습니다.런타임에 usercontrol로드 및 페이지 다시로드

protected void ddlLoadCtr_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    Control userControl = LoadControl("../AleSettings1.ascx");  
    plchldSettingsControl.Controls.Add(userControl); 
} 

나는 F5 (IE)를 누르면 사용자 컨트롤이 렌더링 된 후, 나는 IE가 정보를 다시 할 필요가 IE의 경고 창 ....
가 나는 것을 방지 할 수 있습니다 어떻게 왜 일어나는가를 얻을?

UPDATE :

어쩌면 또 다른 방법이있다? 사용자가 드롭 다운 목록에서 특정 컨트롤을 선택하면 해당 컨트롤을로드하려고합니다 (마크 업과 함께).
다시 게시 할 경우 컨트롤이 사라져서는 안됩니다 (드롭 다운 목록에서 다른 컨트롤을 선택한 경우에만)

모두 업데이트 패널에 있습니다!

답변

0

새로 고침을 수행하면 서버에 대한 마지막 요청을 다시 보내므로 문제가 발생합니다. 이 경우 드롭 다운에서 인덱스를 변경하는 이벤트입니다. 브라우저에서 묻지 않도록 할 수 없습니다.

+0

그래서 내가 할 수 있는게 없습니까? (어쩌면 초기 상태로 페이지를 반환) – urker

+0

당신은 어떻게합니까? – Victor

+0

나는 이것이 왜 묻는 지 모른다. – urker

0

ASP.NET WebForms는 "포스트 백"을 사용합니다. 즉, 선택 목록에서 항목을 선택하는 등 "이벤트"를 처리 할 때마다 새 HTML을 가져 오기 위해 서버로 다시 HTTP POST를 수행합니다.

이렇게하면 다른 버전의 페이지간에 상태를 저장할 수 있지만 F5는 브라우저에서 경고하는 POST가됩니다.

POST-then-REDIRECT을 사용하고 컨트롤의 지속성을 직접 처리하는 방법입니다. 컨트롤이 하나 뿐인 경우 (예 : 다시 페이지로 리디렉션 대신 포스트 백 사용 후

protected void Page_Load(object sender, EventArgs e) 
{ 
    if Request.QueryString["ddlLoadCtr"] = "1": 
    plchldSettingsControl.Controls.Add(LoadControl("../AleSettings1.ascx")); 
} 

과 :

protected void ddlLoadCtr_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    var newUrl = Request.RawUrl + "?ddlLoadCtr=1"; 
    Response.Redirect(newUrl); 
} 
을 컨트롤을 추가, 당신이 컨트롤을로드 할 필요가 있는지 여부를 확인하기 위해 Page_Load의 쿼리 문자열을 선택하여 수행 할 수 있습니다

쿼리 매개 변수와 별도로 상태를 저장하는 다른 방법에는 쿠키 및 세션 변수가 포함됩니다. 이것들은 북마크 할 수 없다는 단점이있다.

어쨌든 이것은 ASP.NET의 컨트롤 자동 상태 관리를 사용하지 않는다는 것을 의미합니다.

+0

정확하게 원하는 것은 아니지만 F5 키를 누르면 컨트롤이로드되는 것을 원하지 않습니다. 페이지의 다른 컨트롤에서 포스트 백이 발생해도 컨트롤에 영향을 주어서는 안됩니다 (컨트롤이 이미로드되어있는 경우 유지). 또한 만약 내가 Response.Redirect (newUrl); 내 모든 통제 상태가 사라졌습니다. – urker

+0

p.s. 또한 모든 것을 updatepanel로 둘러 쌌습니다. – urker

+0

컨트롤 상태가 사라진 이유를 설명했습니다. 리디렉션을 사용하면 상태를 직접 관리해야합니다. 그렇지 않으면 찾고있는 것이 아닙니다. 또한 새로 고침 할 때 브라우저 경고가 표시됩니다. – orip

관련 문제