2013-08-05 3 views
0

저는 1 년이 넘는 시간 동안 ASP.NET에서 작업 해 왔습니다. 저는 피드백에 대한 흥미로운 생각을했습니다.Literal vs GenericHtmlControl 및 viewstate 감소 사용

리터럴 컨트롤이 viewstate에서 텍스트 값을 저장하는 것으로 나타났습니다. 이것은 다소 이상하게 보입니다. 사실상 Literal 컨트롤에 저장된 내용이 복제 될 것입니다 (한 번 렌더링 된 페이지에서, 그리고 한 번은 viewstate 내에 숨겨 짐).

대신 runat = "server"및 innerhtml/innertext 속성을 사용하여 일반 html 컨트롤을 사용하기 시작했습니다. 어쨌든 태그 안에 내용을 감쌀 필요가 있다면 viewstate가 부 풀리지 않으면 서 문자 그대로의 컨트롤과 같은 것을 달성하는 것 같습니다. 가능한 한 내 프로젝트에서 리터럴을 최대한 많이 사용하기 전에 생각하지 못하는 단점이 있는지 궁금합니다. 생각?

+0

사용하거나 값을 수정하는 이러한 컨트롤은 서버쪽에 있습니까? –

답변

0

나는 또한 매우 쉽게 할 수있는 사용자 지정 컨트롤을 만드는 것을 고려할 것입니다. 다음과 같이 할 수 있습니다.

기능이 매우 간단하므로이 기능은 모든 텍스트에 대한 전체적인 액세스를 제공하므로 유연한 솔루션입니다. 예를 들어 나중에 굵게 표시된 텍스트를 원한다면 컨트롤의 모든 마크 업을 업데이트 할 필요가 없으며 사용자 정의 클래스를 변경할 수 있습니다. 이런 식으로하는 것이 많은 이점이 있습니다. 당신이 할 필요가에 마크 업 (C의 tagPrefix로) 구성 파일의 <pages> 요소 내에 네임 스페이스/어셈블리에 refernce를 추가, 변경입니다 :

<c:MyLiteral Text="xyz" runat="server" /> 
+0

이것은 환상적인 해결책처럼 보입니다. 구현하기가 매우 간단하고 일반적인 컨트롤 접근 방식이 viewstate를 깨끗하게 유지하면서 동일한 제한 사항을 갖지 않습니다. 감사! –