Шаблон Razor Delegates - альтернативный ряд - PullRequest
2 голосов
/ 20 февраля 2012

Как я могу расширить этот пример делегата бритвы шаблона List, о котором здесь упоминает Фил Хаак, чтобы я мог предоставить класс css для альтернативной строки?

http://haacked.com/archive/2011/02/27/templated-razor-delegates.aspx

Я хотел бы сделать что-то похожее на это:

<code>@comics.List(
  @< tr class="@odd">
    < td>@item.Title< /td>
    < td>@item.Publisher< /td>
  )

Редактировать: Мне не нужно решение JavaScript или CSS. Мне нужно иметь возможность поддерживать старые браузеры и браузеры, в которых может быть отключен JavaScript.

Ответы [ 2 ]

3 голосов
/ 20 февраля 2012

Если вам нужно решение на стороне сервера, то примерно так оно и будет:

@{ var odd = false; }

@comics.List(
    @<tr class="@((odd = !odd) ? "odd-row" : "")">
        <td>@item.Title</td>
        <td>@item.Publisher</td>
  )

Это должно привести к:

<tr class="odd-row">
<tr class="">
<tr class="odd-row">

(odd = !odd) является логическим тестомплюс операция NOT , которая переключает флаг.

2 голосов
/ 20 февраля 2012

Я предполагаю, что использование только CSS также решит вашу заявленную проблему:

tr:nth-child(even) {background: #CCC}
tr:nth-child(odd) {background: #FFF}


Обновление моего ответа после вашего редактирования

Я не был знаком с этим Razor механизмом шаблонов, спасибо, что поделились, во всяком случае, я прочитал его, чтобы понять его лучше.

К сожалению, это не представляется возможным. Поскольку базовый HelperResult ожидает один параметр с именем @item, дополнительные параметры не могут быть добавлены. Эта статья ясно объясняет проблему.

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

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