修改表格的文本颜色和背景颜色



我不再有问题,因为我知道如何做到这一点

Index.cshtml

@model IEnumerable<ContactManager.Models.Contacts>
@{
    ViewBag.Title = "Index";
    Layout = "~/Views/Shared/_Layout.cshtml";
 }
<h2></h2>

@using (Html.BeginForm()) {
    <p>@Html.TextBox("SearchString")
    <input type="submit" value="Search" /></p>
}
<table class="table">
<tr>
    <th>
        @Html.DisplayNameFor(model => model.FirstName)
    </th>
    <th>
        @Html.DisplayNameFor(model => model.LastName)
    </th>
    <th>
        @Html.DisplayNameFor(model => model.Address)
    </th>
    <th>
        @Html.DisplayNameFor(model => model.City)
    </th>
    <th>
        @Html.DisplayNameFor(model => model.State)
    </th>
    <th>
        @Html.DisplayNameFor(model => model.Zip)
    </th>
    <th>
        @Html.DisplayNameFor(model => model.Phone)
    </th>
    <th>
        Modify
    </th>
</tr>
@foreach (var item in Model) {
var lncolor = "white" ;
    var zipcolor = "black";
    switch (item.LastName) {
        case "Whited":
            lncolor = "yellow";
            break;
        default:
            lncolor = "white";
            break;
    }
    if (item.ID % 2 == 0) {
        zipcolor = "red";
    } else {
        zipcolor = "black";
    }
<tr>
    <td>
        @Html.DisplayFor(modelItem => item.FirstName)
    </td>
    <td bgcolor="@lncolor">
        @Html.DisplayFor(modelItem => item.LastName)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.Address)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.City)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.State)
    </td>
    <td>
        <font color="@txtcolor">
            @Html.DisplayFor(modelItem => item.Zip)
        </font>
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.Phone)
    </td>
    <td>
        @Html.ActionLink("Edit", "Edit", new { id=item.ID }) |
        @Html.ActionLink("Delete", "Delete", new { id=item.ID })
    </td>
</tr>
}
</table>

控制器的相对部分

private ContactsDBContext db = new ContactsDBContext();
    // GET: Contacts
    public ActionResult Index(string searchString)
    {
        var contacts = from c in db.Contact
                       select c;
        if (!String.IsNullOrEmpty(searchString)) {
            contacts = contacts.Where(s => s.FirstName.Contains(searchString) || s.LastName.Contains(searchString) || s.Address.Contains(searchString)
                || s.City.Contains(searchString) || s.State.Contains(searchString) || s.Zip.Contains(searchString) || s.Phone.Contains(searchString));
        }
        //return View(db.Contact.ToList());
        return View(contacts);
    }

我设法找到了一种方法来完成我想要做的事情。我也更新了代码,以反映我所做的事情。我不确定这是最优雅的方式来完成这一点,所以如果有人有更好的建议,我洗耳恭听。

在MVC模式中,在视图页面中编写任何类型的逻辑都是高度贬值的。您可以通过使用viewmodel来实现。步骤如下。首先为模型接触创建一个适当的视图模型。

public class ContactViewModel
{
    public string FirstName{ get; set; }
    public string LastName{ get; set; }
    public string Address{ get; set; }
    public string City{ get; set; }
    public string State{ get; set; }
    public string Zip{ get; set; }
    public string Phone{ get; set; }
    public string LastNameBgcolor{ get; set; }
    public string FontColor{ get; set; }       
}
在控制器:

private ContactsDBContext db = new ContactsDBContext();
// GET: Contacts
public ActionResult Index(string searchString)
{
    var contacts = from c in db.Contact
                   select c;
    if (!String.IsNullOrEmpty(searchString)) {
        contacts = contacts.Where(s =>            s.FirstName.Contains(searchString) || s.LastName.Contains(searchString) || s.Address.Contains(searchString)
            || s.City.Contains(searchString) || s.State.Contains(searchString) || s.Zip.Contains(searchString) || s.Phone.Contains(searchString));
    }
    //return View(db.Contact.ToList());
     List<ContactViewModel> ContactViewModels= new List<ContactViewModel>();
    foreach(var contact in contacts){
    ContactViewModel cvm= new ContactViewModel();
    cvm.FirstName=contact.FirstName;
    cvm.LastName=contact.LastName;
    if(contact.LastName=="Whited"){
        cvm.LastNameBgcolor="yellow";
    }
    else{
        cvm.LastNameBgcolor="white";
    }
   cvm.Address=contact.Address;
   cvm.City=contact.City;
   cvm.State=contact.State;
   cvm.Zip=contact.Zip;
   cvm.Phone=contact.Phone;
   if (contact.ID % 2 == 0) {
    cvm.FontColor = "red";
   } else {
   cvm.FontColor = "black";
   }
ContactViewModels.Add(cvm);
}
return View(ContactViewModels);
}

视图页:

@foreach (var item in Model) {
<tr>
<td>
    @Html.DisplayFor(modelItem => item.FirstName)
</td>
<td bgcolor="@model.LastNameBgcolor">
    @Html.DisplayFor(modelItem => item.LastName)
</td>
<td>
    @Html.DisplayFor(modelItem => item.Address)
</td>
<td>
    @Html.DisplayFor(modelItem => item.City)
</td>
<td>
    @Html.DisplayFor(modelItem => item.State)
</td>
<td>
    <font color="@model.FontColor">
        @Html.DisplayFor(modelItem => item.Zip)
    </font>
</td>
<td>
    @Html.DisplayFor(modelItem => item.Phone)
</td>
<td>
    @Html.ActionLink("Edit", "Edit", new { id=item.ID }) |
    @Html.ActionLink("Delete", "Delete", new { id=item.ID })
</td>
</tr>
}

最新更新