如何避免使用NULL值进行更新

时间:2013-01-31 16:46:20

标签: asp.net-mvc entity-framework razor model

全部。或多或少是MVC的新手,所以不确定如何处理这个问题。

我有从数据库表生成的数据模型(大约100列)。申请表分为6-7个视图。第一个视图创建一个新记录并将其插入数据库。其余视图假设从表单收集信息并更新创建的记录。

    [HttpPost]
    public ActionResult GeneralInfo(ADP.Models.ADPRegistration _registration)
    {
        try
        {

            ADP.Models.IS_WEBEntities _test = new IS_WEBEntities();
            _test.ADPRegistrations.Attach(_registration);
            _test.ObjectStateManager.ChangeObjectState(_registration, System.Data.EntityState.Modified);
            _test.SaveChanges();

            return View("ReferralMethod",_registration);

        }

        catch(Exception er)
        {
            return View();
        }
    }

这是更新我的表的通用代码,它在所有视图中都是类似的。将模型传递回视图的原因是在视图中保留ID。

我遇到的问题是,我的实体_registration包含所有表字段,所以当发布视图时,只有视图中的字段得到更新,之前的列都会变为NULL,因为它们不存在于我的猜测。我似乎无法通过数据库第一个模型进行枚举。

1 个答案:

答案 0 :(得分:0)

你是正确的,因为当MVC在POSTback中重构你的模型时,模型中没有的任何字段在模型中都是NULL。

您的选择是将视野中隐藏的字段包括在内:

@Html.HiddenFor(model => model.SomeValue)

或者在发布后更新模型,但在将其传递给验证之前存储库层:

ModelState.SetModelValue("Name", new ValueProviderResult("Some string",string.Empty,new CultureInfo("en-US")));