2011-10-04 2 views
2

다음 방법을 사용하여 사용자 정의 컨트롤을 문자열로 렌더링합니다.ASP.NET 컨트롤에서 ViewState 및 EventValidation 데이터를 제거하는 방법은 문자열로 렌더링됩니까?

Page pageHolder = new Page(); 
pageHolder.EnableViewState = false; 

UserControl viewControl = (UserControl)pageHolder.LoadControl(path); 
viewControl.EnableViewState = false; 

System.Type viewControlType = viewControl.GetType(); 
HtmlForm tempForm = new HtmlForm(); 
tempForm.EnableViewState = false; 

tempForm.Controls.Add(viewControl); 
pageHolder.Controls.Add(tempForm); 

StringWriter output = new StringWriter(); 
HttpContext.Current.Server.Execute(pageHolder, output, false); 

string content = output.ToString(); 

그러나 출력에는 __VIEWSTATE 정보가있는 __VIEWSTATE 정보가있는 정보와 JavaScript가 포스트 백을 사용합니다.

모든 WebForms/ViewState 관련 코드가 렌더링하려고하는 컨트롤에 대해 생성되지 않도록 완전히 비활성화하는 방법이 있습니까? EnableViewState을 false로 설정하고 .ascx 파일에서 EnabledViewState="false"를 설정하는 것은 효과가없는 것처럼 보입니다.

답변

1

당신이 당신의 Web.config에

<pages enableViewState="false" enableEventValidation="false"> 
... 
</pages> 

을 시도 했습니까?

나는 일반적으로 좋은 생각은 아닌 것 같지만, 무엇을하고 있는지 알고 있다고 가정합니다.

+0

그래도 전체 응용 프로그램에 해당하지 않습니까? –

+0

@JamesJohnson 네, 그가 원하는 걸로하지 않습니까? 그는 말하기를 :'모든 WebForms/ViewState 관련 코드가 완전히 생성되지 않도록하는 방법이 있습니까? EnableViewState를 false로 설정하면 작동하지 않는 것 같습니다. " – Icarus

+0

OP가 페이지 나 컨트롤에 대해 OP를 사용하지 않으려 고한다는 인상을 받았습니다 ... –

1

EnableViewState="false"을 사용자 정의 명령에 설정할 수 있습니다. 이벤트 유효성 검사를 비활성화하는 방법은 web.config 또는 page 지시문을 통해서만 수행 할 수 있다고 생각합니다.

+0

내 질문이 업데이트되었습니다. 이미 false로 설정했습니다. – Omar

+0

나는 숨겨진 필드를 모두 없앨 수 있다고 생각하지 않습니다. ViewState에 저장되는 내용을 제어 할 수 있다고 생각합니다. 문자열을 가져온 후 구문 분석을 고려 했습니까? –

+1

현재 구문 분석 중입니다. 그러나 값이 존재하는지 여부를 확인하는 조건문 집합이 있으므로이를 수행하지 않을 것입니다. – Omar

관련 문제