내 모델에 두 개의 개체 (미리 알림 및 사용자)가 포함되어 있습니다. 각 미리 알림은 한 명의 사용자와 연결됩니다. 나는 내보기로 데이터를 전달하는 데 사용하는 뷰 모델을 정의한중첩 모델을 사용한 ViewModel 유효성 확인
public class Reminder
{
[DisplayName("Subject")]
[Required(ErrorMessage = "{0}: error message.")]
[StringLength(200, ErrorMessage = "{0}: error message.")]
public string Name { get; set; }
[DisplayName("Supervisor")]
public User DepartmentSupervisor { get; set; }
}
public class User
{
[DisplayName("Username")]
[Required(ErrorMessage = "{0}: error message.")]
[StringLength(25, ErrorMessage = "{0}: lerror message.")]
public string Username { get; set; }
[DisplayName("Email")]
[StringLength(50, ErrorMessage = "{0}: error message.")]
[Email(ErrorMessage="Not valid.")]
public string Email { get; set; }
}
:
public class RemindersViewModel
{
public RemindersViewModel()
{
this.Supervisors = new List<SelectListItem>();
}
public Models.Reminder Reminder { get; set; }
public List<SelectListItem> Supervisors { get; set; }
}
감독자는 내가 콤보를 렌더링하는 데 사용할 사용자 (SelectListItem)의 목록입니다.
public ActionResult Edit(Guid id, Models.Reminder Reminder)
{
if (!ModelState.IsValid)
{
// PROBLEM.
}
}
모든 것이 잘 작동하고 난에 이메일을 보여줄 필요가 없기 때문에 내 알림이,은 선택된 사용자 (사용자 이름) 만과 관련된 한 : 나는 양식을 제출하면
컨트롤러는 개체 알림을 리 바인드 드롭 다운, 바인딩이 필드를 채울 수 없기 때문에 내 양식에 존재하지 않습니다. 유효성 검사 프로세스에서 사용자 모델의 유효성을 검사하려고 할 때 오류가 발생합니다. 실제로는 그렇지 않습니다. 중첩 모델을 다루는 가장 좋은 방법은 무엇입니까?
답장을 보내 주셔서 감사합니다. 늘어나는만큼 내 viewmodel을 "평평하게"하는 것이 좋습니다. 내 클래스 remider는 User 유형이 아닌 DepartmentSupervisor 속성을 가질 것입니다 ... 맞습니까? 예제가 있습니까? – LeftyX
@vandalo, 반드시 평평하게 할 필요는 없습니다. 따라서이 특정보기에서 작업 할 속성 만 포함하는'ReminderViewModel'과'UserViewModel'을 가질 수 있습니다. ReminderViewModel에는 UserViewModel 유형의 속성이 있습니다. –
이해하기 시작했습니다. 내 도메인 (엔티티) 클래스가 있다고 생각합니다. 그런 다음 유효성 검사 규칙을 사용하여 중간 클래스 (미리 알림, 사용자 등)를 만들고이 클래스를 내 ViewModel에 중첩합니다. 내가 이해할 수있는 것은 중급 클래스를 없애고 엔티티 (도메인)와 뷰 모델 만 가져야합니다. 맞아? – LeftyX