Должен ли я использовать Response.Write прямо из представления? - PullRequest
0 голосов
/ 13 ноября 2009

Я пытался избежать использования Response.Write (...) непосредственно в моих представлениях MVC. Причина в том, что мне просто нужно ввести строковые литералы, и механизм просмотра знает, что делать. Однако в определенных обстоятельствах я, кажется, создаю слишком много острых скобок (<%%>). Итак, какой из этих 2 фрагментов кода вы считаете более приемлемым?

<% if (true)
{
  Response.Write(Model.SomeValue);
} %>

Или

<% if (true) { %>
<%= Model.SomeValue %>
<% } %>

Ответы [ 3 ]

4 голосов
/ 13 ноября 2009

Вот почему существуют Html-помощники (чтобы максимально избежать спагетти-кода):

<%= Html.MySuperHelper(Model.SomeValue) %>

Каждый раз, когда вам нужно написать заявление if в представлении, вы можете задать себе вопрос: не лучше ли было бы вместо этого написать вспомогательный метод (который в качестве бонуса можно было бы протестировать на модульном уровне)?

2 голосов
/ 13 ноября 2009

Как насчет третьей возможности?

<%= condition ? Html.Encode(Model.SomeValue) : "" %>

Хотя на практике вы должны полностью скрывать от себя все, кроме самой простой логики. Либо выполняйте работу в вашем контроллере, либо оборачивайте логику каким-либо хелпером HTML.

0 голосов
/ 13 ноября 2009

Или четвертый:

<%= condition ? Html.Encode(Model.SomeValue) : "" %>

...