Несколько операторов if в атрибуте html - бритва MVC - PullRequest
0 голосов
/ 05 октября 2011

Если бы я хотел иметь несколько операторов if в атрибуте html, я мог бы сделать что-то вроде этого:

  <input type="button" value="Bad, the title has a lot of excess spacing" title="@if(SomeModel.condOne) {
                              <text>this</text>
                              }
                              @if (SomeModel.CondTwo)
                              {
                              <text> is</text>
                              }
                              @if (SomeModel.CondThree)
                              {
                              <text> a title</text>
                              }      
                             " />

Но это создает много пустых мест, которые нужно усекать.Так что это работает:

  <input type="button" value="Good, the title is condenced" title="@if(SomeModel.condOne) {<text>this</text>}@if (SomeModel.CondTwo){<text> is</text>}@if (SomeModel.CondThree){<text> a title</text>}" />

Тот же принцип может быть применен к элементу с несколькими классами (например, class = "oddrow class1" -> class = "evenrow class2")

Но этоможет быть трудно читать, если это длинная строка.И Visual Studio имеет привычку разбивать это утверждение на несколько строк, если вы коснетесь скобок или Ctrl-K, Ctrl-D (что может сделать любой следующий разработчик).

Существует ли лучший или более надежный способ реализации нескольких условий атрибута в строке для бритвы MVC?

Ответы [ 2 ]

0 голосов
/ 05 октября 2011

Почему бы просто не сделать это следующим образом:

title="@if(SomeModel.condOne) { <text>this</text> }
       @if (SomeModel.CondTwo) { <text> is</text> }
       @if (SomeModel.CondThree) { <text> a title</text> }      
                             " />

Помощник имеет смысл, если вы действительно используете ту же самую логику, особенно если предположить, что та же модель, но вы можете рассмотреть и помощника, который использует Func<> выражение или Action<> выражение.Таким образом, он не будет привязан к одной модели.

0 голосов
/ 05 октября 2011

Я предлагаю создать метод маленьких помощников, который возвращает нужный вам текст.

Вам нужно будет передать его SomeModel, и в этом методе проверить свое состояние таким образом, чтобы у вас было что-то более приятное на вид и которое легче поддерживать.

Например:

public static class HtmlHelpers
{
    public static string FetchTitle(this HtmlHelper helper, SomeModel model)
    {
        //Your logic here.
    }
}

Вы можете прочитать все о методах Html Helper здесь на Блог Джона Галлоуэя .

Вот где я научился их использовать.

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