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