3

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

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

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

在 AJAX 表单中,我只需键入一个随机日期,例如 2005 年 5 月 2 日,然后单击提交,然后得到上面提到的异常。

4

2 回答 2

1

我想我刚刚解决了我自己的问题。我数据库中的“日期”列属于“日期时间”类型。但是我的域模型有这个:

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

我将该 DataType 更改为“DataType.DateTime”,现在它似乎工作正常。

谢谢大家的指导!

于 2012-07-25T13:53:02.337 回答
1

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

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

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

于 2012-07-25T12:44:57.160 回答