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


这是将新文档保存到数据库并更新文档的部分视图列表的方法:

public ActionResult Index_AddDocument(HomeIndexViewModel viewModel)
    {

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

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


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


  InnerException {“转换为日期时间时发生溢出。”} System.Exception {System.Data.SqlServerCe.SqlCeException}


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

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


在AJAX表单中,我只键入一个随机日期(例如5/2/2005),然后单击Submit(提交),然后获取上述异常。

最佳答案

viewModel.NewDocument.Date调用之前db.SaveChanges()的值是什么?

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

我怀疑SQL Server CE在日期范围上也有限制,并且拒绝使用默认的1/1/0000 DateTime值。

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

10-11 04:09