0

我正在使用Fullcalendar jquery 插件在我的 MVC 4 应用程序的日历视图中显示事件。

我已经配置了正确调用我的控制器操作的插件,它传入了两个双参数,它们表示以 unix 时间戳格式显示在当前视图上的开始日期和结束日期。

在这里你可以看到我的控制器动作方法

[HttpPost]
public ActionResult GetEvents( double start, double end ) {
    DateTime dtStart = DateTimeUtils.UnixTimeStampToDateTime( start );
    DateTime dtEnd = DateTimeUtils.UnixTimeStampToDateTime( end );

    IPolicyRepository _pRepo = _uow.PolicyRepository;
    IEnumerable<Policy> model = 
    _pRepo.Find( p => p.EndDate >= dtStart.Date && p.EndDate < dtEnd.Date );

    ...
}

该方法DateTimeUtils.UnixTimeStampToDateTime(double)通过以下方式转换 datetime 对象中的 unix 时间戳

public static DateTime UnixTimeStampToDateTime( double unixTimeStamp ) {
    // Unix timestamp is seconds past epoch
    DateTime dtDateTime = new DateTime( 1970, 1, 1, 0, 0, 0, 0 );
    dtDateTime = dtDateTime.AddSeconds( unixTimeStamp ).ToLocalTime();
    return dtDateTime;
}

但是,Find即使某些行存在,存储库的方法又只是将 lambda 传递给 EF,但不会返回任何行。我怀疑这个问题可能是由于浏览器和数据库服务器之间的格式和/或语言环境不同。

我该如何解决这个问题并创建一个能够了解使用的语言环境和特定格式的查询?

编辑:有关更多信息,我在此处添加模型定义

public partial class Policy
{
    public int PolicyID { get; set; }

    [...]

    [Required]
    [DisplayName( "Begin date" )]
    [DisplayFormat( ApplyFormatInEditMode = true, DataFormatString = "{0:dd-MM-yyyy}" )]
    public DateTime BeginDate { get; set; }

    [Required]
    [DisplayName( "Due Date" )]
    [DisplayFormat( ApplyFormatInEditMode = true, DataFormatString = "{0:dd-MM-yyyy}" )]
    public DateTime EndDate { get; set; }
}
4

1 回答 1

0

我发现了问题。

模型类上存在的属性DisplayFormat导致了问题

[DisplayFormat( ApplyFormatInEditMode = true, DataFormatString = "{0:dd-MM-yyyy}" )]

只需删除,它就可以完美运行!

于 2013-06-12T15:40:36.637 回答