3

目標

1 つのビュー内で 2 つのクエリを繰り返す。

問題

私のアプリケーションには、特定の製品の比較リストがあります。ページの上部には、この商品の名前、最小/最大価格、写真、その他の詳細が表示されます。

私が必要とするのは次のようなものです:

@modelComparisonList List<MyApp.Models.Products>
@modelProduct MyApp.Models.Products

@{
    ViewBag.Title = "Comparing " + modelProduct.name;
}

<h1>There is @modelProduct.quantity products to compare</h1>   

<table>
    @foreach (var item in modelComparisonList)
    {
        <tr>
            <p>@item.productName</p>
        </tr>
        <tr>
            <p>@item.productPrice</p>
        </tr>
        <tr>
            <p>@item.marketName</p>
        </tr>
    }
</table>

私の場合を理解できますか?

これを解決するためのソリューションを実行する方法がわかりません。誰かが私にアイデアを与えることができますか?

4

2 に答える 2

1

はい、ビューモデルを使用してそれを行うことができます。ビュー モデルは、ビューでデータを表すために存在します。ビュー モデルは、複数のモデルからの「連結」にすることができます。

以下は、クラスとプロパティに関するいくつかのヒントです。

製品ドメイン モデルは次のようになります。

public class Product
{
     public int Id { get; set; }

     public string Name { get; set; }

     public string MarketName { get; set; }

     public decimal Price { get; set; }

     // Other properties not mentioned above
}

ビュー モデルは次のようになります。

public class ProductViewModel
{
     public IEnumerable<Product> Products { get; set; }

     public Product Product { get; set; }
}

アクション メソッドは次のようになります。

public ActionResult Compare(int id)
{
     ProductViewModel viewModel = new ProductViewModel
     {
          Product = productRepository.GetBuId(id),
          Products = productRepository.GetAll()
     };

     return View(viewModel);
}

ビューは次のようになります。

@model YourProject.ViewModels.Products.ProductViewModel

@{
     ViewBag.Title = "Comparing " + @Model.Product.Name;
}

<h1>There is @Model.Product.Quantity products to compare</h1>

<table>
     @foreach (var product in Model.Products)
     {
          <tr>
               <td>@product.Name</td>
          </tr>
          <tr>
               <td>@product.Price</td>
          </tr>
          <tr>
               <td>@product.MarketName</td>
          </tr>
     }
</table>

これが役立つことを願っています。

于 2013-07-19T11:40:36.033 に答える