2013-03-22 1 views
0

У нас есть приложение 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> 
<% 
} 
%> 

ответ

0

не делать. Попробуйте выполнить прогон кода с ошибкой и поместите результат в строковые переменные. Поместите это в блок try-catch. Затем, нет ошибки, вы можете записать весь блок # div1, включая уже оцененные строки, зная, что ошибки не будет.

+0

Я боялся, что получаю такой ответ. Приведенный выше пример представляет собой обширное упрощение HTML, скрипта клиента и встроенного сценария сервера, с которым я действительно сталкиваюсь. Таким образом, будет много рефакторинга, чтобы вытащить логику, которая может ошибаться в отдельные области встроенного кода, покрытые структурой try-catch, а затем визуализировать простые текстовые переменные во всем представлении. Однако я передам это предложение команде. – Zarepheth

+0

Решил следовать этому маршруту. Много рефакторинга, чтобы переместить всю логику, которая могла бы заблудиться, и поместить ее внутри блока 'try' для заполнения переменных' string' (или 'MvcHtmlString' для последующего рендеринга. Я не ожидаю '<% = stringVar%>' или '<% = MvcHtmlStringVar%>' ошибочно при рендеринге страницы. – Zarepheth