Mise en forme conditionnelle dans un Rasoir Vue Index
Je suis en train de conditionnellement ajouter un CSS background-color
à un ensemble de lignes de la table, basé sur la proximité de l'élément de la date d'expiration est. Trente jours ou moins doivent être de couleur rouge, 90 - 31 jours orange et le reste en vert. (Je suis en train de mettre du rouge dans la première, une fois que ce travail, je vais revenir en arrière et faire le orange/vert lignes).
@foreach (var item in Model)
{
int daysLeft = (item.ExpiryDate - DateTime.Today).Days;
if (daysLeft <= 30)
{
<tr style="background-color:Red">
}
else
{
<tr>
}
<td>
@Html.DisplayFor(modelItem => item.SupplierName)
</td>
<td>
@Html.DisplayFor(modelItem => item.ExpiryDate)
</td>
<td>
@Html.DisplayFor(modelItem => item.InceptionDate)
</td>
<td>
@Html.DisplayFor(modelItem => item.Value)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id = item.Id }) |
@Html.ActionLink("Details", "Details", new { id = item.Id }) |
@Html.ActionLink("Delete", "Delete", new { id = item.Id })
</td>
</tr>
}
Quand je lance cette page, je reçois un YSOD dire la @foreach
bloc est manquant à sa fermeture }
, mais aussi loin que je peux voir, ils sont adaptés de sorte que je suis en supposant que le réelle problème est autre chose.
Vous devez vous connecter pour publier un commentaire.
Rasoir exige que les étiquettes directement à l'intérieur de blocs de code équilibrée et bien formé.
Par conséquent, tout le code après la première ouverture
<tr>
balise est réellement analysée comme le balisage, de sorte que le dernier}
ferme juste l'if
.Pour corriger cela, vous pouvez forcer le Rasoir d'ignorer la balise par la préfixation de la ligne avec
@:
.Alternativement, vous pouvez vous débarrasser de la
if
entièrement et écrireUtiliser l'opérateur conditionnel
bool état ? true_expression : false_expression;
http://msdn.microsoft.com/en-us/library/ty67wk28(v=vs. 80).aspx