1
Asp.net MVC 2 응용 프로그램을 빌드하고 있습니다.게시 할 때 내 모델의 속성에 SelectList의 값 채우기
저는 Team이라는 엔티티가 공개 속성을 통해 성별 및 등급이라는 다른 두 엔티티에 매핑됩니다.
public class Team
{
public virtual int Id { get; private set; }
public virtual string CoachesName { get; set; }
public virtual string PrimaryPhone { get; set; }
public virtual string SecondaryPhone { get; set; }
public virtual string EmailAddress { get; set; }
public virtual Grade Grade { get; set; }
public virtual Gender Gender { get; set; }
}
다음과 같은 ViewModel이 있습니다.
public class TeamFormViewModel
{
public TeamFormViewModel()
{
Team = new Team();
Grade = new SelectList((new Repository<Grade>()).GetList(),"ID", "Name",Team.Grade);
Gender = new SelectList((new Repository<Gender>()).GetList(), "ID", "Name", Team.Gender);
}
public Team Team { get; set; }
public virtual SelectList Grade { get; set; }
public virtual SelectList Gender { get; set; }
}
내 양식이 예상대로 렌더링됩니다. Create 메서드를 디버깅 할 때 성 및 등급 속성이 내 Team 개체에서 NULL임을 알 수 있습니다.
[HttpPost, Authorize]
public ActionResult Create(Team team)
{
try
{
if (ModelState.IsValid)
{
(new Repository<Team>()).Save(team);
}
return RedirectToAction("Index");
}
catch
{
return View();
}
}
내가 뭘 잘못하고 있니?
감사합니다, 에릭
이 나에게 많은 이해된다. 희망을 조금씩 시도해 보겠습니다. –
이것은 매우 잘 작동했습니다. 필요한 로직을 ViewModels에 두는 것이 일반적인 관행입니까? 그것은 내가 아직 읽지 않은 한 가지입니다. –
아니요. 일반적인 관행은 아닙니다. 난 당신의 원본에 충실하려고했지만 실제로는 뷰 모델 생성자에서 리포지토리에 대한 호출을 리팩터링했습니다. 컨트롤러가 DB 또는 캐시에서 목록을 가져 와서 생성자에 전달할 가능성이 있습니다. 뷰 모델에 백엔드에 대해 전혀 알리지 않고 UI를 렌더링하는 데 필요한 데이터를 뷰에 제공하는 작업을 처리하도록하는 것이 좋습니다. –