【问题标题】: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())
    )
    

    这使它更具可读性。

    【讨论】:

      猜你喜欢
      • 2011-08-29
      • 1970-01-01
      • 2011-01-21
      • 2011-01-03
      • 1970-01-01
      • 2011-02-23
      • 2011-11-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多