在我的应用程序中,我有一个包含文档 列表的索引页。我想在同一个索引页面上添加一个带有 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/