2013-01-31 62 views
0

全部。或多或少地MVC新,所以不知道如何处理这个问题。如何避免用NULL值更新

我有从数据库表(大约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,因为它们不存在在我看来我的猜测。我似乎也无法列举数据库第一个模型。

回答

0

你是正确的,因为当MVC在POSTBACK中重建模型时,任何不在表单中的字段在模型中都将为NULL。

您的选择是包含的字段(一个或多个)隐藏在你的观点:

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

或更新后后的模型,但在此之前它传递给您的验证&库层:

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