2012-03-17 14 views
2

データのグリッドを表示しています。属性の1つが有効期限です。有効期限が60日未満の場合は、その行を強調表示したいと思います。MVCContribグリッドの行にCSSクラスを追加します。

私は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' 「ブール」

私はここで間違っていますか?

答えて

3

次は私のために正常に動作します:

モデル:

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()) 
) 

それをより読みやすくなります。

関連する問題