2016-07-10 2 views
0

'백엔드'의 일부 모델 값을 채우기 위해 사용할 디자인 패러다임은 무엇입니까? 예 : 나는 영화 DB를 가지고있다. 사용자가 영화를 만들 수 있습니다. 누가 영화를 만들 었는지, CreateOn, LastModified를 기록하고 싶습니다. 내 모델에는 UserId, CreatedOn, LastModified, ... (이름, 장르 등)이 있습니다. 생성 된 기본보기에는이 모든 필드가 있습니다. 나는 창조 한 전망에서 CreatedOn, LastModified, UserId를 제거했다; 이제 제어기에서 Create 기능으로 돌아 오면 모델이 유효하지 않습니다. Clear 함수를 통해 모델 오류를 제거한 다음 컨트롤러에서이 3 개의 값을 채웠습니다. 그러나 그렇다면 이것은 올바르지 않습니다. 지우기는 다른 유효성 검증 오류도 지 웁니다.컨트롤러의 MVC 값 입력

디자인 관점에서
public ActionResult Create([Bind(Include = "Name,Description,Genre")] Movie movie) 
{ 
    ApplicationUser user = System.Web.HttpContext.Current.GetOwinContext().GetUserManager<ApplicationUserManager>().FindById(System.Web.HttpContext.Current.User.Identity.GetUserId()); 

    ModelState.Clear(); 
    movie.UserId = user.Id; 
    movie.CreatedOn = DateTime.UtcNow; 
    movie.LastModified = DateTime.UtcNow; 


    if (ModelState.IsValid) 
    { 
     db.Movies.Add(movie); 
     db.SaveChanges(); 
     return RedirectToAction("Index"); 
    } 

    return View(movie); 
} 
+0

모델뿐만 아니라 얻을 수있는 오류를 표시 할 수 있습니까? 많은 일이있을 수 있습니다 : 필요한 필드를 놓치고'ModelState.IsValid' (속성 중 하나가 * 유효하지 않을 수 있습니다) 등을 확인하기 전에 속성을 매핑하십시오. –

+0

가능한 복제본은 [무시할 수있는 방법이 있습니까? 일부 속성 (POCO) ASP.NET MVC3에서 폼을 확인할 때?] (http://stackoverflow.com/questions/5209252/is-there-any-way-to-ignore-some-properties-on-a -poco-when-validating-a-form-in) –

+0

편집 할 때 항상 뷰 모델 사용 - [MVC의 ViewModel이란 무엇입니까?] (http://stackoverflow.com/questions/11064316/what-is-viewmodel-in- mvc) –

답변

0

, 당신이보기에 대해 다음 컨트롤러에 특별히 전용 모델을 만들 당신이 저장하는 데 필요한 추가 값을 클라이언트로 전송 된 데이터로 기존 모델을 채워야 데이터베이스 (예 : CreateOn, LastModified 등).

희망이 있습니다.

+0

그것은; 뷰에서 CreateOn, LastModified를 표시해야하지만; 오직 내가 그것을 보여주고 싶지 않은 창조에만. 나는 만들고 편집하기위한 새로운 모델을 만들 것이다. – Amit

+0

HiddenFor 확장 메서드를 사용하여 항상 "해결"할 수 있지만 추한 것입니다. 제 생각에는 전용 모델을 만드는 것이 올바른 방법입니다. –

관련 문제