我创建了一个名为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
传递给视图?我甚至都不知道这是不是正确的做法。我想要完成的是在页面上创建导航。因此,我不仅会拥有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 :(得分: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
ViewBag.AnyNameYouLike=Pcs;
**RAZOR SYNTAX:**
中
@foreach(var pc in ViewBag.Pcs)
{
@pc.Id;//Will give you id
}
只需应用循环即可完成。
{{1}}
您可以循环浏览所有属性
答案 1 :(得分:0)
创建顶级视图模型 - 就像您拥有DashboardViewModel
- 并将所有必需的模型添加为属性。
如果您为该顶级视图模型中所需的每个业务模型创建了视图模型,那将是一件好事。
将业务对象自动映射到新的视图模型 - 有关示例,请参阅AutoMapper。这样,您只传递视图实际需要的信息。