MVC에서 더 많은 ViewModels 및 강력한 형식의 뷰를 이해하고 싶습니다.MVC의 ViewModels 및 객체 조작
은 컨트롤러 내 뷰 모델은
public class Combined
{
public IEnumerable<Domain> Domains { get; set; }
public IEnumerable<RegInfo> RegInfos { get; set; }
public Combined(IEnumerable<Domain> domains, IEnumerable<RegInfo> reginfos)
{
this.Domains = domains;
this.RegInfos = reginfos;
}
I 결합 타입의 객체 저장소에서 데이터를 전달한다. (면도기 사용) 내가 @model 그래서 난 두 목록을 유지하는 개체를 전달하고있어 project.namespace.Combined이 뷰에서
public ActionResult RegDetails(int id = 0)
{
var domain = from x in unitofwork.DomainRepository.Get(n => n.ID == id)
select x;
var reginfo = from y in unitofwork.ReginfoRepository.Get(n => n.ID == id)
select y;
var regdetails = new Combined(domain, reginfo);
return View(regdetails);
}
.
1/왜 @ Model.Domain.Name (noobish 질문이지만 그 뒤에 논리를 이해하는 데 도움이) 같은 각 목록 항목에 액세스 할 수 있습니까? 조인을 사용하여 View "level"형식으로 할 수 있지만 MVC 패턴을 완전히 반대합니다. 그 두 테이블을 조인 할 수있는 유일한 장소는 컨트롤러에 있다고 생각하지만, 완전히 새로운 객체를 생성 할 것이므로 모델을 생성해야합니까?
2/View (join, automapper)를 채우는 데 사용할 수있는 둘 이상의 테이블에서 데이터를 보유 할 IEnumerable 객체를 얻는 가장 좋은 방법은 무엇입니까?
3/하나의 양식에서 여러 테이블에 POST 할 때 사용할 수있는 모델을 만들 수있는 방법이 있습니까?
미리 감사드립니다.
이 많은 로직 컨트롤러에서 진행에 조금처럼 보인다 , 왜보기 모델은 주어진 id로부터 스스로를 구성 할 수 없습니까? linq 질의는 크게 단순화 될 수 있으며'from x in' 또는'select x' 비트가 필요 없으며 직선의'Get'은 필요한 열거 형을 반환합니다. – asawyer
ViewModel이라는 단어를 사용하는 것은 다소 혼란 스럽습니다. MVVM에서는 Model 객체를 표시하는보기에 맞게 변형 된 클래스를 나타내는 데 사용됩니다. – flup