仅显示日期格式并在MVCContrib Grid中继续排序AZ

时间:2012-03-13 02:06:28

标签: asp.net-mvc-3 datetime mvccontrib

我使用以下LINQ创建网格模型:

...
            var query = from a in GetUser()
                        select new UserModel
                        {
                            ID = a.ID,                            
                            StartDate = a.StartDate,
                            EndDate = a.EndDate,
                            StateName = a.State.StateName,
                            StateID = a.StateID,
                            City = a.City,
                        };
            return query;
  ....

,HTML是

 @Html.Grid(Model.PagedList).Columns(
                        col =>
                        {
                            col.For(c => c.StateName).Named("State").Attributes(@class => "row").HeaderAttributes(@class => "head");
                            col.For(c => c.City).Named("City").Attributes(@class => "row").HeaderAttributes(@class => "head");
                            col.For(c => c.StartDate).Named("Start Date").Attributes(@class => "row").HeaderAttributes(@class => "head");
                            col.For(c => c.EndDate).Named("End Date").Attributes(@class => "row").HeaderAttributes(@class => "head");
                            col.For(c => Html.ActionLink("Details", "Details", new { id = c.ID })).Named("View Details").HeaderAttributes(@class => "head").DoNotEncode();
                        }).Sort(Model.GridSortOptions).Attributes(@class => "grid") 

主要问题是如何只显示没有TIME部分的DATE?

我尝试了一些选项但在某些情况下我得到了错误,而在其他情况下,排序AZ根本不起作用。

有任何线索吗? 谢谢!!!

2 个答案:

答案 0 :(得分:4)

尝试使用

col
.For(c => c.EndDate.ToLongDateString())
.Named("End Date")
.Attributes(@class => "row")
.HeaderAttributes(@class => "head");

答案 1 :(得分:3)

我发现的更容易的是列上的格式方法。 see docs here

所以你的代码看起来像这样:

col.For(c => c.EndDate).Format("{0:d"})
//use .Format("{0:yyyy-MM-dd}") to get 2014-10-21

如果您想使用 ToShortDateString ,则需要定义列名称和排序列名称,例如:

 col.For(c => c.EndDate.ToShortDateString())
    .Named("End Date")
    .SortColumnName("EndDate");