2012-03-13 55 views
4

如何使用Razor時設置html屬性?如何使用MVC Razor設置html屬性,如類?

在下面的代碼中,如果當前模型的「成功」屬性爲true,我想要設置元素的類屬性。

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

但它不起作用。

如何實現這一目標?

感謝

回答

5

怎麼樣使用條件運算符:

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

隨着如果:

<tr class="@if([email protected]){<text>trFailedTestRun</text>}"> 
+0

+1但是請注意它的*條件*操作這是我的無論如何,首選的一個,表現力,但其他人無疑會更喜歡HtmlHelper擴展 – 2012-03-13 14:53:07

+0

@AndrasZoltan好,趕上!我不知道我使用的運算符的名稱錯誤:) – nemesv 2012-03-13 14:56:22

+0

嗯,我想說,我已經從來沒有做過 - 但我會說謊,它並不僅僅是* only *三元操作符! – 2012-03-13 15:06:28

0

我會做一個擴展方法的HtmlHelper這樣

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

然後在視圖

<tr class="@Html.GetFailedClass(charlieTestRunViewModel.Succeeded)"> 
3

我發現使用razor helper最優雅

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

,並使用它像

<tr class="@MyHelpers.ClassIf(charlieTestRunViewModel.Succeeded, "trFailedTestRun")"> 
0

您可以使用此

< TR類=「@( Model.Succeeded? 「trPassedTestRun」:「trFailedTestRun」)」>

您必須參考您在查看的頂級型號類似下面

@model charlieTestRunViewModel