Изменение вывода HTML в MVC3 - PullRequest
3 голосов
/ 26 января 2011

В моем приложении MVC3 я хочу удалить все теги HTML5 для вывода, когда пользователь использует IE <9, чтобы избежать использования обходного пути внешнего интерфейса. </p>

Я рассмотрел использование 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.

Из прочтения SO и Google, MVC, похоже, не имеет такой же "жизненный цикл страницы", как веб-формы (где я просто перезаписал Render и это работает нормально), что имеет смысл.

Итак, мой вопрос: как мне получить HTML как строку в MVC?Кто-нибудь пытался манипулировать выводом html?

Ответы [ 4 ]

7 голосов
/ 26 января 2011

Я думаю, вы должны использовать ActionFilter для этого. Я видел пример того, как кто-то изменил поток вывода в этой записи блога. или в этой записи .

3 голосов
/ 26 января 2011

HTML5 обратно совместим, так что не стесняйтесь использовать этот вывод по умолчанию с любым браузером. Устаревшие браузеры, такие как IE6, все равно будут корректно отображаться, и даже ненавязчивая проверка будет работать. Поэтому мой совет - оставить вывод как есть.

0 голосов
/ 26 января 2011

Чтобы следовать концепции шаблона MVC, я хотел бы использовать другую реализацию View в зависимости от того, поддерживает ли браузер HTML 5 или нет, вместо того, чтобы пытаться связать вывод. Альтернативой может быть использование элементов управления через стороннюю библиотеку, которая может изящно разлагаться, когда браузер не поддерживает все последние функции (или библиотека может реализовывать элементы управления независимо). JQuery, поставляемый с ASP.NET MVC, идеально подходит для множества элементов управления, которые охватывают большинство тегов HTML5.

0 голосов
/ 26 января 2011

Почему вы не используете JavaScript? Просто определите, что такое пользовательский браузер и удалите HTML, который вы хотите В JQuery есть хорошие методы для этого.

...