2013-05-16 71 views
0

我想根據條件是否爲true來更改行的背景顏色。我已經嘗試了以下,但它不喜歡的語法。我已經嘗試了幾種不同的方式,但它不喜歡任何人MVC中的條件高亮行Razor VB.NET

@<tr class="@if (item.ActualDeliveries <> item.ExpectedDeliveries) 
      then string.empty 
      else "style=background-color:Yellow" 
      End if)"> 

。這是我的錯誤:

「如果」塊沒有結束。所有「If」塊語句必須以匹配的「End If」結尾。 的String.Empty是不是在else語句的方法 它說:「語法錯誤」

--Updated

剃刀不輸出任何東西,甚至使用下面的語句。但是,如果我在「</tr>」結束標記之後使用「結束if」,它就會起作用。

If True Then 
    @:<tr> 
    End If 
     <td> 
      @Html.DisplayFor(Function(modelItem) currentItem.StartDate) 
     </td> 

     <td> 
      @Html.ActionLink("Edit", "Edit", New With {.id = currentItem.ID}) 
     </td> 
    </tr> 
+1

定義 「不喜歡的語法」。你看到什麼錯誤? –

+0

「If」塊沒有終止。所有「If」塊語句必須以匹配的「End If」結尾.string.empty不是一種方法,然後在else語句中它說「語法錯誤」 – Baahubali

回答

1

,而不是試圖解析標籤內剃刀,嘗試這樣的事情:

@If item.ActualDeliveries <> item.ExpectedDeliveries Then 
<tr> 
Else 
<tr style="background-color:yellow"> 
End If 

你可以從設計師獲得警告,但可以忽略那些 - 正確的HTML將產生在運行時。另外,如果實際編譯的話,您的標記會創建類似如下的內容:

<tr class="style=background-color:yellow"> 

這顯然是不正確的。

+0

我試過了你所說的,但沒有當所需的事件發生,頁面上沒有輸出表格。我不得不在@標籤前使用@:否則它不能找到else或end if。任何其他想法? – Baahubali

1

試試這個:

<tr class="@(If(item.ActualDeliveries = item.ExpectedDeliveries, "style=background-color:Yellow;", String.Empty))"