【问题标题】:Add css class to row in MVCContrib grid将 css 类添加到 MVCContrib 网格中的行
【发布时间】:2012-03-17 18:42:40
【问题描述】:
我正在显示一个数据网格,其中一个属性是到期日期。如果到期日期不到 60 天,我想突出显示该行。
我找到了this post,并使用那里的答案来使用RowAttributes函数:
@Html.Grid(Model.PagedList).Columns(column =>{
column.For(m => m.Name);
column.For(m => m.ExpirationDate);
}).Sort(Model.GridSortOptions)
.Attributes(@class => "grid")
.RowAttributes(m => new MvcContrib.Hash(@class =>
(m.Item.ExpirationDate.Value.AddDays(-60) < DateTime.Now)) ? "warning" : "")
但是我得到一个编译错误说:
无法将类型“MvcContrib.Hash”隐式转换为“bool”
我在这里做错了什么?
【问题讨论】:
标签:
asp.net
asp.net-mvc
razor
mvccontrib
【解决方案1】:
以下对我来说很好用:
型号:
public class MyViewModel
{
public DateTime? ExpirationDate { get; set; }
}
控制器:
public class HomeController : Controller
{
public ActionResult Index()
{
var model = new[]
{
new MyViewModel { ExpirationDate = DateTime.Now.AddDays(70) },
new MyViewModel { ExpirationDate = DateTime.Now.AddDays(30) },
new MyViewModel { ExpirationDate = DateTime.Now.AddDays(90) },
};
return View(model);
}
}
查看:
@using MvcContrib.UI.Grid
@using MvcContrib
@model IEnumerable<MyViewModel>
@(Html
.Grid(Model)
.Columns(column => {
column.For(m => m.ExpirationDate);
})
.Attributes(@class => "grid")
.RowAttributes(m => new Hash(@class => (m.Item.ExpirationDate.Value.AddDays(-60) < DateTime.Now) ? "warning" : "" ))
)
你也可以为你的模型写一个扩展方法:
public static class RowAttributesExtensions
{
public static Hash GetRowAttributes(this MyViewModel model)
{
return new Hash(@class => (model.ExpirationDate.Value.AddDays(-60) < DateTime.Now) ? "warning" : "");
}
}
然后:
@(Html
.Grid(Model)
.Columns(column => {
column.For(m => m.ExpirationDate);
})
.Attributes(@class => "grid")
.RowAttributes(m => m.Item.GetRowAttributes())
)
这使它更具可读性。