1

我有带 created_date 列的数据库表,它可以正常添加新记录,因为我只是通过设置它

 DateTime.Now 

我的问题是当我编辑一条记录时,它会抛出一个错误,

SqlDateTime 溢出,因为 created_date 值为 '1/1/0001'

我尝试将 created_date 显示为隐藏字段并且它有效。
是否可以不在我的表单中添加 created_date ?

4

2 回答 2

3

在我回答这个好问题之前,我要感谢你发帖。

您必须手动编码您的 EDIT/UPDATE 控制器以防止保存空字段。

这是手动编码更新模型的示例。为了填充空字段,您需要从数据库中获取旧值。

    [HttpGet]
    public ActionResult UpdateAction(Model model)
    {
        // Get the current values of model
        var _oldModel = db.GetModel(model.Id);

        // Specify or change only the field that is needed to Update

        _oldModel.property1 = model.property1;

        db.Model.Save();
于 2013-05-02T09:25:55.190 回答
0

需要将 created_date 列作为隐藏添加到视图中。当您不添加隐藏时,控制器可能会收到默认值。也许您的字段类型是 DateTime,所以“1/1/0001”超出了它的范围。如果您将类型更改为 Datetime2,它将接受“1/1/0001”。

- - - - - - - 更新 - - - - - - - - - - - -

我重现了这个问题,我认为最好的方法是将隐藏字段放在视图中。因为当视图将模型返回给控制器时,它会发送所有字段,如果缺少一个字段,则它必须为空。但是由于您的列不可为空,因此视图发送“1/1/0001”,并且此值对于 Datetime 是不可接受的。

于 2013-01-24T06:08:24.660 回答