У нас есть приложение MVC.Net 2, работающее с .Net 4.0. Бывают случаи, когда встроенный код в наших представлениях может ошибаться, отправляя неверный HTML в браузер.Как сказать IE игнорировать ранее полученный неверный HTML и отображать разные HTML?
Как сообщить обозревателю Internet Explorer о закрытии любых открытых атрибутов и элементов, чтобы он мог корректно отображать сообщение об ошибке?
Чтобы поймать и зарегистрировать ошибки во встроенном коде, я включаю HTML-код представления и встроенный код в блок try структуры try-catch и просто хочу, чтобы после сообщения об ошибке было выведено простое сообщение пользователю.
Пример:
<%
try {
%>
<div id="div1">
<label class="<%=embedded.code.that.may.err%>">mylabel</label>
<div id="div2" class="data-style">
<%=more.embedded.code.that.may.err%>
</div>
</div>
<%
}
catch(Exception ex) {
(new LogManager()).Save(ex);
%>
<div style="color:red;font-weight:bold;font-size:large;">
Sorry, there was an error.
</div>
<%
}
%>
Я боялся, что получаю такой ответ. Приведенный выше пример представляет собой обширное упрощение HTML, скрипта клиента и встроенного сценария сервера, с которым я действительно сталкиваюсь. Таким образом, будет много рефакторинга, чтобы вытащить логику, которая может ошибаться в отдельные области встроенного кода, покрытые структурой try-catch, а затем визуализировать простые текстовые переменные во всем представлении. Однако я передам это предложение команде. – Zarepheth
Решил следовать этому маршруту. Много рефакторинга, чтобы переместить всю логику, которая могла бы заблудиться, и поместить ее внутри блока 'try' для заполнения переменных' string' (или 'MvcHtmlString' для последующего рендеринга. Я не ожидаю '<% = stringVar%>' или '<% = MvcHtmlStringVar%>' ошибочно при рендеринге страницы. – Zarepheth