Как установить атрибуты HTML, такие как класс, используя MVC Razor? - PullRequest
4 голосов
/ 13 марта 2012

Как установить атрибуты html при использовании Razor?

В приведенном ниже коде я хотел бы установить атрибут класса элемента, если свойство "Succeeded" текущей модели имеет значение true.

<tbody>
                @foreach (CharlieTestRunViewModel charlieTestRunViewModel in Model)
    {
                    <tr class="@if(!@charlieTestRunViewModel.Succeeded){'trFailedTestRun'}">
                        <td>
                            @charlieTestRunViewModel.Succeeded
                        </td>
                                    </tr>
    }
            </tbody>

Но это не работает.

Как этого добиться?

Спасибо

Ответы [ 4 ]

5 голосов
/ 13 марта 2012

Как насчет использования условного оператора:

<tr class="@(!charlieTestRunViewModel.Succeeded ? "trFailedTestRun" : "")">

С, если:

<tr class="@if(!@charlieTestRunViewModel.Succeeded){<text>trFailedTestRun</text>}">
3 голосов
/ 13 марта 2012

Я использую бритвенный хелпер самый элегантный

@helper ClassIf(bool condition, string className)
{
   if (condition)
   {
      @className
   }    
}

и использую его как

 <tr class="@MyHelpers.ClassIf(charlieTestRunViewModel.Succeeded, "trFailedTestRun")">
0 голосов
/ 13 марта 2012

Вы можете использовать это

Вы должны указать свою модель поверх вашего вида, как показано ниже

@ модель charlieTestRunViewModel

0 голосов
/ 13 марта 2012

Я бы сделал метод Extension для HtmlHelper следующим образом

public static MvcHtmlString GetFailedClass(this HtmlHelper html, bool condition)
    {
        if(!condition)
           return MvcHtmlString.Create("trFailedTestRun")
    }

А потом в поле зрения

<tr class="@Html.GetFailedClass(charlieTestRunViewModel.Succeeded)">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...