I need to switch between a CSS class depending if the message is read.
In simple it should be like this:
if (item.status == "Unread")
{
  <tr style="font-weight:bold">
  ...
}
else
{
  <tr>
  ...
}
I am having trouble achieving this though. Can something tell me a good to get this done? Should I be using a HTML helper or something?
This is the full code so far:
@foreach (var item in Model) {
    if (item.status == "Unread")
    {
        <tr style="font-weight:bold">
            <td>
                @Html.DisplayFor(modelItem => item.timestamp)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.subject)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.message_text)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.status)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.user_sender.username)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.user_reciever.username)
            </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>
    }
}
                A simple solution would be something like this:
@foreach (var item in Model) 
{
    var style = (item.status == "Unread") ? "font-weight:bold" : "";
    <tr style="@style">
        ...
    </tr>
}
But note, it's generally cleaner to have a separate CSS class, then directly decorate the elements the appropriate class based on its status. For example:
/* css */
tr.status-unread { font-weight: bold; }
...
/* razor */
@foreach (var item in Model) 
{
    <tr class="[email protected]()">
        ...
    </tr>
}
                        Another simpler solution would be this,
With single condition:
@foreach (var item in Model) 
{
    <tr style="@Html.Raw(item.status == "Unread" ? "font-weight:bold" : "")">
        ...
    </tr>
}
OR you can set CSS class as you asked with multiple conditions if any,
@foreach (var item in Model) 
{
    <tr class="@Html.Raw((item.status == "Unread" && item.subject == "Hello World") ? "alert-success" : "")">
        ...
    </tr>
}
This way I used in my project.
You can use unitary operator like below
<td style="color:'@(item.ChangeRate > 0 ? "red" : "blue")'">
 <i class="fa" class="@(item.ChangeRate > 0 ? "fa-caret-up" : "fa-caret-down")"></i>
</td>
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With