c# - MVC3 AJAX 表单 - 日期时间溢出?

标签 c# asp.net ajax asp.net-mvc-3 datetime

在我的应用程序中,我有一个包含文档 列表的索引页。我想在同一个索引页面上添加一个带有 AJAX 表单的新文档。我正在使用 ViewModel 将 NewDocument 对象传递到索引页面。

AJAX 表单(为了便于阅读,我省略了一些部分):

@using (Ajax.BeginForm("Index_AddDocument", new AjaxOptions { UpdateTargetId = "MainList" }))

<div class="editor-field">
        @Html.EditorFor(model => model.NewDocument.Date)
        @Html.ValidationMessageFor(model => model.NewDocument.Date)
</div>

这里是将新的Document保存到数据库,并更新文档的部分 View 列表的方法:

public ActionResult Index_AddDocument(HomeIndexViewModel viewModel)
    {

        db.Documents.Add(viewModel.NewDocument);
        db.SaveChanges();

        return PartialView("ListOfDocs", db.Documents);
    }

这不起作用,我在 db.SaveChanges() 处遇到异常。它说:

InnerException {"An overflow occurred while converting to datetime."} System.Exception {System.Data.SqlServerCe.SqlCeException}

编辑: 我的文档域模型具有以下日期属性:

[DataType(DataType.Date)]
public DateTime Date { get; set; }

在 AJAX 表单中,我只是键入一个随机日期,如 5/2/2005,然后单击“提交”,然后得到上述异常。

最佳答案

在调用 db.SaveChanges() 之前,viewModel.NewDocument.Date 的值是多少?

C# 可以处理从 0000 年 1 月 1 日到 9999 年 12 月 31 日的日期。我知道 SQL Server 无法处理整个范围(例如,我相信 SQL Server 2008 无法处理 1753 年 1 月 1 日之前)

我怀疑 SQL Server CE 对其日期范围也有限制,并且对默认的 1/1/0000 DateTime 值犹豫不决。

关于c# - MVC3 AJAX 表单 - 日期时间溢出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11649896/

相关文章:

C# 用可变字符打开文件

c# - vshost 文件的用途是什么?

c# - DataMember Name 属性在 Entity Framework 中不起作用

javascript - ASP.NET:如何仅在客户端 ajax 完成后才提交回发

jquery - Ajax 调用 Web 服务失败

javascript - ajax 调用成功后点击链接 href

c# - Entity Framework 使用 newsequentialid() 作为 Guid Key

JavaScript主细节面板-如何传递ajax对象?

javascript - 当用户完成输入或使用 jQuery 离开文本字段时,如何从文本字段中获取值?

c# - dotnet core 2.0 中 appSettings.json 中的 SMTP 设置