2013-01-31 3 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) 

을 또는 POST 후 모델을 업데이트하지만 검증에 & 저장소 층을 통과하기 전에 :

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