2013-01-31 63 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")));