2012-12-12 41 views
0

我創建了一個名爲視圖模型DashboardViewModel:ASP.NET MVC4:如何視圖模型和其他數據傳遞給視圖

public class DashboardViewModel 
{   
    public Hardware Hardware { get; set; } 
    public Software Software { get; set; }  
} 

我傳遞視圖模型在我的ActionResult視圖。但我也需要傳遞其他的東西。這是我的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的看法,如果我已經通過dvm?我甚至不知道這是否正確。我試圖完成的是在頁面上創建導航。因此,我不僅擁有個人電腦,還擁有監視器和打印機,以及軟件。這裏是我的硬件類:

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

你的'HardwareType Class'是什麼? –

回答

0

你可以把你如下PcsViewBag 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也可以存儲在ViewBagViewBag.AnyNameYouLike=Pcs;

**RAZOR SYNTAX:** 

只是適用環路和你做。

@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。這樣你只能傳遞視圖實際需要的信息。

相關問題