MVC 3,如何不显示某些模型列进行编辑?

时间:2013-01-24 05:57:49

标签: asp.net-mvc asp.net-mvc-3 entity-framework asp.net-mvc-4

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

设置它
 DateTime.Now 

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

  

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

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

2 个答案:

答案 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。