문제

PHP 배경에서 나오면 깨끗한 URL을 사용하여 한 서비스에서 다른 서비스로 데이터를 가져옵니다.

그러나 일부 ASP.NET 프로젝트에서는 URL에서 끔찍한 ViewState 매개 변수를 얻습니다.

전 세계적으로 이것을 끄는 방법이 있습니까?

내 ASP.NET 앱에 어떤 영향을 미칩니 까?

도움이 되었습니까?

해결책

다음과 같이 전체 사이트의 ViewState를 끄 so니다.

    <system.web>
<pages enableViewState="false" />

즉, URL에서 가져 오지 않아야합니다. ViewState는 Postback (일반적으로 Post를 사용하는)이있는 서버로 전송되는 숨겨진 필드입니다. 페이지가 클라이언트에게 렌더링 될 때 컨트롤 상태를 유지하여 각 PostBack과 함께 보냅니다. 응용 프로그램에서 작동하는 경우 Jon의 답변을 보지 않으면 대신 POST를 사용하도록 전환 할 수 있습니다 (문제 양식은 반드시 GET를 사용하고 있습니다).

ViewState가 ASP.NET 수명주기에 어떻게 적합한 지에 대한 자세한 내용은이 링크를 확인하십시오. http://msdn.microsoft.com/en-us/library/ms972976.aspx.

다른 팁

나는 가졌다 비슷한 질문 쓸 때 평판 추적기.

나는 당신이 양식을 사용하지 않는 것보다 전 세계적으로 어떻게하는지 모르겠습니다. runat="server" 설정보다 징계와 더 관련이 있습니다. 특히, 당신이 있다면 runat="server" 양식으로 설정하면 항상 ViewState 매개 변수를 얻을 수 있다고 생각합니다. 가치. 어쨌든 그것은 내 경험이었습니다.

분명히 이것은 당신을 다소 제한하지만, ASP.NET의 적절한 부분을 위해 asp.net 컨트롤 대신 (ASP.NET 컨트롤 대신) HTML 서버 컨트롤을 사용하면 인생을 훨씬 간단하게 이해할 수 있음을 발견했습니다.

a를 사용하여 기본적으로 ViewState를 끕니다 <page> Web.config의 요소. 사용 EnableViewState="true" 에서 @Page Web.Config에서 ViewState를 비활성화하면 Directive가 더 이상 작동하지 않습니다. 나중에 특정 페이지의 ViewState가 필요하다고 결정하면 <location> 요소.

<configuration>
  <system.web>
    <pages enableViewState="false" />
  </system.web>

  <location path="MyFolder/MyPage.aspx">
    <system.web>
      <pages enableViewState="true" />
    </system.web>
  </location>
  <location path="Site.master">
    <system.web>
      <pages enableViewState="true" />
    </system.web>
  </location>
</configuration>

ViewState가 활성화 한 페이지가 사용하는 마스터 페이지에 대해서도 동일한 작업을 수행해야합니다.

이것을 web.config 파일에 추가하십시오.

<Pages enableViewState="false"/> 

ASP.NET MVC로 전환 할 수 있습니다. 내가 이해하는 바에 따르면 ViewState를 사용하지 않습니다.

그러나 대부분의 ASP.NET 웹 양식 개발자가 기대하는 특정 동작은 ViewState 없이는 작동하지 않을 것임을 기억하십시오. ViewState의 목적은 다양한 페이지와 제어 속성이 한 번의 요청에서 다음 요청으로 지속되는 환상을 제공하는 것입니다. ViewState에는 모든 제어 속성이 포함되어 있지 않습니다. 아이디어는 ViewState가 양식이 마지막으로 렌더링 될 때와 같이 이러한 속성을 유지한다는 것입니다.

좋은 예는 a SelectedIndexChanged 드롭 다운 (AutoPostback 세트가없는 것)에서 이벤트. ViewState는 이전 인덱스를 유지하고 양식은 현재 인덱스를 게시하고 컨트롤은 선택한 인덱스가 변경되었음을 알기 위해 두 가지를 비교하기 때문에 작동합니다. 그때가 올 때입니다 SelectedIndexChanged 이벤트. ViewState가 없으면 해당 이벤트가 해고되지 않습니다. 동일합니다 TextChanged 이벤트 등

GET 상황 (내가 결코 뛸 수없는 상황)이 없으면 ViewState의 큰 문제는 필요하지 않은 곳에 사용하는 것입니다. 그리드 컨트롤은 모든 행에서 모든 컨트롤의 이전 값을 유지할 필요가 없으므로 ViewState를 활성화하지 마십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top