*/ Unix时间戳(毫秒),以日期时间在Razor视图

问题描述:

我有一个.net核心MVC项目,其中我使用pagination定义PR。微软文档。*/ Unix时间戳(毫秒),以日期时间在Razor视图

由于这是这种情况,并且由于我的数据库时间戳在Epoch中,所以我需要将时间戳转换为日期时间对象,因为它用于我的Razor视图中的表格。该表创建如下:

@model PaginatedList<MSPFrontend.Tripmetadata> 
<div class="table-responsive"> 
    <table class="table table-bordered table-condensed table-hover table-striped"> 
     <thead> 
      <tr> 
       <th>Trip Id</th> 
       <th>Start Time</th> 
       <th>End Time</th> 
       <th>Duration</th> 
       <th>Avg Speed</th> 
       <th>Distance</th> 
      </tr> 
     </thead> 
     <tbody> 
      @foreach (var item in Model) 
      { 
       <tr class="trip" data-id="@item.Tripid" data-url="@Url.Action("TripMapping", "Trip")"> 
        <td>@item.Tripid</td> 
        <td>@item.Starttimestamp</td> 
        <td>@item.Endtimestamp</td> 
        <td>@item.Duration</td> 
        <td>@item.AvgSpeed knots</td> 
        <td>@item.Distance km</td> 
       </tr> 
      } 
     </tbody> 
    </table> 
</div> 

我的模型如下所示:

public partial class Tripmetadata 
{ 
    public Tripmetadata() 
    { 
    } 

    [Key] 
    public int Tripid { get; set; } 

    [Display(Name = "Start Timestamp")] 
    public long? Starttimestamp { get; set; } 

    [Display(Name = "End Timestamp")] 
    public long? Endtimestamp { get; set; } 

    public long? Duration { get; set; } 

    [Display(Name = "Average Speed")] 
    public decimal? AvgSpeed { get; set; } 

    public decimal? Distance { get; set; } 
} 

我以前使用的视图模型来照顾这个,而是作为公关。微软分页文档分页需要我用我的模式,因为它要求的数据,当我通过分页滚动。

我认为这将有可能做这样的事情:

<td>@new DateTime(1970, 1, 1, 0, 0, 0).AddMilliseconds(@Convert.ToDouble(@item.Starttimestamp))</td> 

,但我得到下面当我尝试:

jquery.js:9566 GET http://localhost:1048/Trip/TripTable 500 (Internal Server Error) 

我设法找到了我的解决方案,它实际上是非常简单的。

里面我@foreach(var item in Model)我可以做我的转换,尽管它可能不是这样做的最佳方式。

我最后不得不在我看来,以下几点:我TABEL标题下

<div class="table-responsive"> 
    <table class="table table-bordered table-condensed table-hover table-striped"> 
     <thead> 
      <tr> 
       @{ 
        var headerItem = Model[1]; 
       } 
       <th>@Html.DisplayNameFor(modelItem => headerItem.Tripid)</th> 
       <th>@Html.DisplayNameFor(modelItem => headerItem.Starttimestamp)</th> 
       <th>@Html.DisplayNameFor(modelItem => headerItem.Endtimestamp)</th> 
       <th>@Html.DisplayNameFor(modelItem => headerItem.Duration)</th> 
       <th>@Html.DisplayNameFor(modelItem => headerItem.AvgSpeed)</th> 
       <th>@Html.DisplayNameFor(modelItem => headerItem.Distance)</th> 
      </tr> 
     </thead> 
     <tbody> 
      @foreach(var item in Model) 
      { 
       var startTime = new DateTime(1970, 1, 1, 0, 0, 0).AddMilliseconds(Convert.ToDouble(@item.Starttimestamp)); 
       var endTime = new DateTime(1970, 1, 1, 0, 0, 0).AddMilliseconds(Convert.ToDouble(@item.Endtimestamp)); 
       double diff = Convert.ToDouble(item.Endtimestamp) - Convert.ToDouble(item.Starttimestamp); 
       var duration = TimeSpan.FromMilliseconds(diff); 
       var avgSpeed = Math.Truncate(100 * Convert.ToDecimal(item.AvgSpeed))/100; 
       var distance = Math.Truncate(100 * Convert.ToDecimal(item.Distance))/100; 
       <tr class="trip" data-id="@item.Tripid" data-url="@Url.Action("TripMapping", "Trip")"> 
        <td>@item.Tripid</td> 
        <td>@startTime</td> 
        <td>@endTime</td> 
        <td>@duration</td> 
        <td>@avgSpeed knots</td> 
        <td>@distance km</td> 
       </tr> 
      } 
     </tbody> 
    </table> 
</div> 

的部分是什么,让我在我的模型定义了我的头。具体如下:

public partial class Tripmetadata 
{ 
    public Tripmetadata() 
    { 
    } 

    [Key] 
    [Display(Name = "Trip ID")] 
    public int Tripid { get; set; } 

    [Display(Name = "Start Timestamp")] 
    public long? Starttimestamp { get; set; } 

    [Display(Name = "End Timestamp")] 
    public long? Endtimestamp { get; set; } 

    [Display(Name = "Duration")] 
    public long? Duration { get; set; } 

    [Display(Name = "Average Speed")] 
    public decimal? AvgSpeed { get; set; } 

    [Display(Name = "Distance")] 
    public decimal? Distance { get; set; } 

}