我有带 created_date 列的数据库表,它可以正常添加新记录,因为我只是通过设置它
DateTime.Now
我的问题是当我编辑一条记录时,它会抛出一个错误,
SqlDateTime 溢出,因为 created_date 值为 '1/1/0001'
我尝试将 created_date 显示为隐藏字段并且它有效。
是否可以不在我的表单中添加 created_date ?
我有带 created_date 列的数据库表,它可以正常添加新记录,因为我只是通过设置它
DateTime.Now
我的问题是当我编辑一条记录时,它会抛出一个错误,
SqlDateTime 溢出,因为 created_date 值为 '1/1/0001'
我尝试将 created_date 显示为隐藏字段并且它有效。
是否可以不在我的表单中添加 created_date ?
在我回答这个好问题之前,我要感谢你发帖。
您必须手动编码您的 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();
需要将 created_date 列作为隐藏添加到视图中。当您不添加隐藏时,控制器可能会收到默认值。也许您的字段类型是 DateTime,所以“1/1/0001”超出了它的范围。如果您将类型更改为 Datetime2,它将接受“1/1/0001”。
- - - - - - - 更新 - - - - - - - - - - - -
我重现了这个问题,我认为最好的方法是将隐藏字段放在视图中。因为当视图将模型返回给控制器时,它会发送所有字段,如果缺少一个字段,则它必须为空。但是由于您的列不可为空,因此视图发送“1/1/0001”,并且此值对于 Datetime 是不可接受的。