2012-12-12 5 views
0

에보기 모델 및 기타 데이터를 전달하는 방법을 내가 작성한 뷰 모델은 DashboardViewModel했다. 하지만 나는 다른 것들도 지나쳐야한다. 이미 dvm을 전달하고 경우ASP.NET의 MVC4 :</p> <pre><code>public class DashboardViewModel { public Hardware Hardware { get; set; } public Software Software { get; set; } } </code></pre> <p>내 ActionResult에서보기로 뷰 모델을 전달하고있다 : 뷰

public ActionResult Index() 
{ 

    HardwareType hwt = new HardwareType { HType = "PC" }; 
    IEnumerable<Hardware> Pcs = db.Hardware.Where(h => h.HardwareType.Contains(hwt)); 

    DashboardViewModel dvm = new DashboardViewModel(); 

    return View(dvm); 
} 

어떻게 내가보기에 Pcs를 전달하지 : 여기 내 ActionResult입니까? 이것이 올바른 접근법인지 나는 모른다. 내가 성취하고자하는 것은 페이지에서 네비게이션을 만드는 것입니다. 따라서 PC가있을뿐만 아니라 모니터와 프린터를 소프트웨어뿐만 아니라보기에 전달해야합니다.

public class Hardware 
{ 
    public int Id { get; set; } 
    public virtual ICollection<DeviceType> Type { get; set; } 
    public string AssetTagId { get; set; } 
    public virtual ICollection<Manufacturer> Manufacturer { get; set; } 
    [Required] 
    [StringLength(50)] 
    public string ServiceTagId { get; set; } 
    [Required] 
    [StringLength(50)] 
    public string SerialNumber { get; set; } 
    [Required] 
    [StringLength(75)] 
    public string ProductNumber { get; set; } 
    // [Required] 
    [StringLength(20)] 
    public string PurchaseDate { get; set; } 
    [StringLength(20)] 
    public string WarrantyExpiration { get; set; } 
    [Required] 
    [StringLength(20)] 
    public string WarrantyType { get; set; } 
    public virtual ICollection<Location> Location { get; set; } 
    public virtual ICollection<HardwareType> HardwareType { get; set; } 
    [Required] 
    [StringLength(2000)] 
    public string Notes { get; set; } 
    public string POATag { get; set; } 
} 

을위한 가장 좋은 방법은 무엇입니까 제가 (하드웨어 및 소프트웨어의 다양한 카테고리와 탐색을 작성)하고 싶은 : 여기 내 하드웨어 클래스는 무엇입니까? 나는 MVC를 처음 사용하고 무엇을해야하는지에 대한 제안을 따르려고 노력하고 있지만, 나는이 모든 잘못을 범하고있는 것처럼 높은 수준의 접근법을 사용할 수있다. 감사.

+0

또한 Razor 구문은 무엇입니까? – sehummel

+0

'하드웨어 유형 클래스'란 무엇입니까? –

답변

0

당신은 넣을 수 있습니다 Pcs 아래 ViewBag or ViewData에 :

public ActionResult Index() 
{ 

    HardwareType hwt = new HardwareType { HType = "PC" }; 
    IEnumerable<Hardware> Pcs = db.Hardware.Where(h => h.HardwareType.Contains(hwt)); 
    ViewBag.Pcs=Pcs;//or ViewData["Pcs"]=Pcs; 

    DashboardViewModel dvm = new DashboardViewModel(); 

    return View(dvm); 
} 

ViewBag 동적 객체입니다. 아무것도 추가 할 수 있습니다. 예 : 통 더 Pcs은 그냥 루프를 적용 ViewBag.AnyNameYouLike=Pcs;

**RAZOR SYNTAX:** 

ViewBag에 저장 될 수있는 작업이 완료된다.

@foreach(var pc in ViewBag.Pcs) 
{ 
    @pc.Id;//Will give you id 

} 

당신이

+0

이 접근법을 시도하고 그것이 ViewBag.Pcs가 무엇인지 알지 못한다고 나에게 말했다. – sehummel

+0

제 견해로 '@model CIT.ViewModels.DashbaordViewModel'을 가지고 있었지만 현재 컨텍스트에는 존재하지 않는다고 말했습니다. – sehummel

+0

프로그램이 해당 문을 실행하는 경우 디버깅을 시도하십시오 ... –

0

같은 모든 속성을 통해 루프가 최상위 뷰 - 모델을 만들 수 있습니다 - 당신이 DashboardViewModel을 가지고있는 것처럼 - 속성으로 필요한 모든 모델을 추가 할 수 있습니다.

최상위 뷰 모델에 필요한 각 비즈니스 모델에 대한보기 모델을 만든 경우 좋을 것입니다.

비즈니스 오브젝트를 새보기 모델에 자동 맵핑하십시오 (예 : AutoMapper 참조). 그렇게하면 뷰가 실제로 필요로하는 정보 만 전달하게됩니다.

관련 문제

 관련 문제