1

私はこのViewModelを持っています:

public DashboardViewModel(Dashboard dashboard)
        {
            HardwareType hwt = new HardwareType { HType = "PC" };
            IQueryable<Hardware> Pcs = db.Hardware.Where(h => h.HardwareType.Contains(hwt));

        }

PCS 変数をビューに渡して、反復できるようにしたいと考えています。これが私のコントローラーです:

 public ActionResult Index()
        {
            ViewBag.Title = "ULS Computer Inventory Tracker";

            Dashboard dashboard = new Dashboard();
            var dashbaordViewModel = new DashboardViewModel(dashboard);

            return View(dashboardViewModel);
        }

そして私の見解:

@{
    @model CIT.ViewModels.DashboardViewModel
}

...

 @foreach (var item in Pcs) {
    <li><a href="#" class="btn"><i class="icon-hdd"></i> @item.HardwareType</a></li>
 }

しかしPcs、現在のコンテキストには存在しないエラーが発生します。ここで何が間違っていますか?

4

2 に答える 2

0

ビューがアクセスできるようにするにPcsは、インスタンス スコープからパブリックにアクセスできる必要があります。理想的には、これはパブリック プロパティを介して行う必要があります。

Public IEnumerable<Hardware> Pcs {get; private set;}

public DashboardViewModel(Dashboard dashboard)
{
    HardwareType hwt = new HardwareType { HType = "PC" };
    this.Pcs = db.Hardware.Where(h => h.HardwareType.Contains(hwt));
}

ビュー内のモデルを介して参照する必要もあります。

@foreach (Hardware item in Model.Pcs)
于 2012-12-11T20:40:41.233 に答える
0

現在存在するように、PCS はビューモデルのコンストラクターにのみ存在する変数としてスコープが設定されているため、PCS 変数をメンバー レベル変数として ViewModel に公開する必要があります。

    public IEnumerable<Hardware> Pcs { get; set; }

    public DashboardViewModel(Dashboard dashboard)
    {
        HardwareType hwt = new HardwareType { HType = "PC" };
        Pcs = db.Hardware.Where(h => h.HardwareType.Contains(hwt));
    }
于 2012-12-11T20:33:15.213 に答える