2011-01-26 8 views
3

내 MVC3 응용 프로그램에서 사용자가 IE < 9를 사용할 때 출력용 HTML5 태그를 모두 제거하여 프론트 엔드 해결 방법을 사용하지 않겠습니다.MVC3에서 HTML 출력 변경

컨트롤러에서 HttpModule, ActionFilter, OnResultExecuted 메서드를 사용하고 내부에서 Application_Start을 사용했습니다.

지금까지 내가 같은 것을 사용 HttpApplication.Context.Response.OutputStream에서 문자열로 출력을 얻을 필요가 있다고 생각했습니다

HttpApplication application = (HttpApplication)source; 
HttpResponse response = application.Context.Response; 
StreamReader sr = new StreamReader(stream); 
string content = sr.ReadToEnd(); 

을하지만 얻을 모두 같은 오류 Stream was not readable입니다. context.Response.Write으로 응답에 쓸 수 있습니다.

그래서 주위에 독서에서 MVC는 같은 "페이지 수명주기"가 webforms (내가 단지 Render을 overring하고있어 그것을 작동합니다) sens를 만드는 곳이 있습니다.

그럼 내 질문은 HTML을 MVC에서 String으로 가져 오는 방법입니까? html 출력을 조작하려고하는 사람이 있습니까?

답변

7

나는 이것을 수행하기 위해 ActionFilter을 사용할 수 있어야한다고 생각합니다. this blog post. 또는 this post에서 출력 스트림을 수정하는 예를 보았습니다.

+0

고마워, 두 번째는 나를 위해 일하고있어! – fredrik

+0

마지막 링크는 모든 사람들이 HTML 출력을 변경하는 것에 대해 알아야 할 모든 것입니다! 감사! – bpiec

0

왜 자바 스크립트를 사용하지 않습니까? 그냥 사용자 브라우저가 무엇인지 결정하고 원하는 html을 제거하십시오. JQuery에는이를 수행 할 수있는 좋은 방법이있다.

+0

당신은 절대적으로 구름이지만, 불행히도 이것은 자바 스크립트와 응용 프로그램이 필요합니다. – fredrik

0

MVC 패턴의 개념을 따르려면 브라우저가 출력을 처리하지 않고 HTML 5를 지원하는지 여부에 따라 다른 View 구현을 사용해야합니다. 또 다른 방법은 브라우저가 모든 최신 기능을 지원하지 않거나 라이브러리가 독립적으로 컨트롤을 구현할 수있을 때 정상적으로 분해 할 수있는 제 3 자 라이브러리를 통해 컨트롤을 사용하는 것입니다. ASP.NET MVC와 함께 제공되는 JQuery는 대부분의 HTML5 태그를 포함하는 많은 컨트롤을 사용할 수있는 이상적인 도구입니다.

3

HTML5는 이전 버전과 호환되므로 모든 브라우저에서이 기본 출력을 자유롭게 사용할 수 있습니다. IE6과 같은 오래된 브라우저는 여전히 올바르게 렌더링되며 눈에 거슬리지 않는 유효성 검사가 작동합니다. 그래서 제 충고는 결과를 그대로 남겨 두는 것입니다.

+0

아쉽게도 IE에서 인식 할 수없는 태그는 닫히고 무시됩니다. 자바 스크립트를 사용하면 컨테이너 요소로 사용할 수 있도록 태그를 만들 수 있습니다. 레이아웃을 유지하기 위해 모든 html5 태그를 감싸고 싶지 않습니다. – fredrik

+0

@fredrik 물론 ''과 같은 HTML5 관련 태그를 사용하면 IE6에서는 무시되지만 ASP.NET MVC 3에서는 HTML5에만 해당하는 모든 것이 표준 태그에 적용되는 'data- *'속성입니다 ''와 같은 IE6가 완벽하게 사용됩니다. –

+0

예. 그들은 무시됩니다.

Lorem

인 경우 IE에서

Lorem

으로 렌더링됩니다. 배열 – fredrik