0

DashboardViewModelというViewModelを作成しました。

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

ActionResultのビューにViewModelを渡します。しかし、私は他のものも渡す必要があります。これが私の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に不慣れで、何をすべきかについての提案に従おうとしていますが、これはすべて間違っているので、より高いレベルのアプローチを使用することができます。ありがとう。

4

2 に答える 2

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に保存することもできます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 に答える