Как убрать булеву логику из моего представления? - PullRequest
3 голосов
/ 28 августа 2009

В моем ASP.NET MVC View я выбираю спрайт на основе логического значения, установленного в модели следующим образом:

<div class="sprite-icon_dog<% =(Model.HasNewDog ? "_new" : "") %>"></div>

Это безобразно, и мне это не нравится.

Моя цель - использовать sprite-icon_dog_new, если Model.HasNewDog равно true, и использовать sprite-icon_dog, если Model.HasNewDog неверно.

Что может быть более элегантным и понятным способом сделать это?

Ответы [ 2 ]

5 голосов
/ 28 августа 2009

Я думаю, что HTML Helper был бы подходящим вариантом?

public static string DogDiv(this HTMLHelper html, bool HasDog)
{
  return "...."
}

На ваш взгляд:

<%=Html.DogDiv(Model.HasDog) %>

Надеюсь, это поможет,

Dan

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

Это некрасиво, но это может быть лучшим вариантом. Если вы переместили логику в html-помощник, вы теперь стираете границы между тем, что является отображением, и тем, что является бизнес-логикой. Если вы хотите изменить свою разметку или CSS, вы будете ограничены тем, что вы можете сделать, если вы не измените код в классе Html helper.

По моему мнению, часть этого безобразия привыкает к модели MVC. Одним из столпов MVC является обеспечение строгого разделения между отображением, бизнес-логикой и моделью данных, но если вы начнете добавлять логику отображения в помощнике, это начнет отрицать то, что MVC намеревается сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...