2010-05-05 2 views
2

나는 runat = "server"가 현재 필요한 이유를 알고 있지만 (ASP.NET why runat="server"), 디자인에 간단한 기본값을 포함하는 경우 합의가 필요하지 않습니다 (물론 동의합니다).더 이상 runat = "server"가 필요하지 않도록 ASP.NET을 수정할 수 있습니까?

ASP.NET이 ASPX 및 ASCX 파일을 구문 분석하여 runat = "server"가 더 이상 필요하지 않게되는 방식을 수정, 확장, 역 컴파일 및 다시 작성하거나 가로 채거나 변경하는 것이 가능합니까? 예를 들어,이 목표를 달성하기 위해 Mono 버전을 분기 할 수 있다고 가정합니다.

경우 특정 요구 사항은, 하나 개의 디자인 다음 하이라이트 도움이됩니다에서 : 구성 네임 스페이스 태그 (예 : "ASP"로)가 발생하는 경우, 구문 분석하는 동안

  • 는, 요소의 RUNAT 속성을 "서버"
  • 기본
  • 구문 분석 도중 구성 된 네임 스페이스 태그가 발견되면 (예 : "asp") 요소의 runat 속성 값을 사용할 수있는 경우 해당 값을 기본값 대신 사용해야합니다.
  • 새 페이지 수준 설정이 도입되었습니다 페이지 지시문 또는 web.config에 설정). 특정 네임 스페이스 태그
+0

showat = "client"가 필요하지 않음을 감사드립니다. * 내 질문 * 4 월 1 일 * 2010 : http://stackoverflow.com/questions/2561964/ –

+1

모든 것은 짜증. 나는 ASP.NET MVC를 선호한다. –

답변

0

이 작업을 수행하기 위해 전체 페이지 구문 분석기를 수정해야 할 수도 있습니다. 그렇다고 생각하지 않습니다.

반면에 자신을 만들 수 있어야합니다. buildProviders ElementBuildProvider class을 참조하십시오. .aspx 페이지에 대한 자체 빌드 공급자를 만들고 기본 제공 공급자를 바꾸는 데 사용할 수 있어야합니다.

불행히도 ASP.NET에서 사용하는 PageBuildProvider 클래스는 내부 클래스이며 페이지를 구문 분석하는 데 사용하는 PageParser 클래스는 sealed입니다. 당신은 전적으로 당신 자신의 것입니다.

이제 runat="server"은 10 년 동안 ASP.NET에 있었고 곧 변경되지는 않을 것이라고 생각합니다.

디자이너의 지원을 잃어 버릴 수도 있지만 어쨌든 걱정하지 않아도됩니다.

+0

디자이너 지원에별로 관심이 없습니다.그렇다면 PageParser 및 PageBarserProvider 클래스가 디 컴파일되고 새 프로젝트/수정 된 것으로 다시 어셈블 된 경우 작동 할 것입니까? 나는 이것이 [Microsoft .NET Framework 재배포 가능 EULA] (http://msdn.microsoft.com/en-us/library/ms994405.aspx)로 인해 아마도 합법적이지는 않지만, 이론. 감사 – sean2078

0

지금까지 내가 아는 한 ASP.NET 페이지 처리 프로세스에서 충분히 허용 할 수있는 갈고리가 없습니다. 재정의하거나 실제 aspx/ascx 코드의 구문 분석 또는 처리를 확장 할 수있는 방법이 없습니다.

ASP.NET은 매우 유연하며 ViewState의 저장 /로드 방식, 세션 저장 위치 등과 같은 많은 기본 동작을 재정의 할 수 있지만 이는 그 중 하나가 아닙니다.

그러나 기술적으로 페이지 개체는 단지 또 다른 HttpHandler입니다. 핸들러를 작성하고 원하는 핸들을 사용할 수 있습니다. Page 클래스가하는 모든 것을 구현 한 다음이 추가 기능을 구현하면됩니다. :) Reflector를 꺼내서 Page 객체의 ProcessRequest 메소드를 통해 파싱하고 실제로 aspx에 선언 된 객체를 파싱/초기화하는 위치를 확인하면 찾고있는 기능을 구현하는 방법을 알 수 있습니다. 하지만 네가 네 시간을 낭비하고 있다고 생각해.

관련 문제