0

我创建了一个名为 DashboardViewModel 的 ViewModel:

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

我将 ViewModel 传递给 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 的新手,正在尝试遵循有关做什么的建议,但我可以使用更高级别的方法,因为也许我正在处理这一切都是错误的。谢谢。

4

2 回答 2

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

}

您可以像这样遍历所有属性

于 2012-12-12T16:37:13.570 回答
0

创建一个顶级视图模型 - 就像你拥有的一样DashboardViewModel- 并将所有必要的模型添加为属性。

如果您为该顶级视图模型中所需的每个业务模型创建视图模型,那就太好了。

将业务对象自动映射到新的视图模型 - 请参阅AutoMapper示例。这样,您只传递视图实际需要的信息。

于 2012-12-12T16:38:55.003 回答