Asp.net mvc asp.net mvc viewmodel获取getenumerator的公共定义时出错

Asp.net mvc asp.net mvc viewmodel获取getenumerator的公共定义时出错,asp.net-mvc,Asp.net Mvc,我可以让我的产品模型显示在我的视图中。但我需要将其传递到ViewModel中,以便可以与来自多个模型的数据进行交互。当我将视图绑定到ProductPageViewModel时,会出现“GetEnumerator没有公共定义”错误。我尝试了各种各样的IEnumerable选项,但找不到正确的组合 我包括了当视图绑定到模型时可以工作的控制器和视图 完全错误是 CS1579:foreach语句无法对JaniesWebLive.ViewModel.ProductPageViewModel类型的变量进行操

我可以让我的产品模型显示在我的视图中。但我需要将其传递到ViewModel中,以便可以与来自多个模型的数据进行交互。当我将视图绑定到ProductPageViewModel时,会出现“GetEnumerator没有公共定义”错误。我尝试了各种各样的IEnumerable选项,但找不到正确的组合

我包括了当视图绑定到模型时可以工作的控制器和视图

完全错误是

CS1579:foreach语句无法对JaniesWebLive.ViewModel.ProductPageViewModel类型的变量进行操作,因为 JaniesWebLive.ViewModel.ProductPageViewModel'不包含'GetEnumerator'的公共定义

@foreach触发(模型中的var项目)

Products.cs

public class Products 
{
    [Key]
    public int WpId { get; set; }
    public string Category { get; set; }
    public string WpProductId { get; set; }
    public string ProdDescShort { get; set; }
    public string ProdDescLong { get; set; }
    public string ProductMedium { get; set; }
    public decimal? Price1 { get; set; }
}
ProductPageViewModel.cs

public class ProductPageViewModel
{
    public IEnumerable<Products> Products { get; set; }
    public Contact Contacts { get; set; }
    public string Message { get; set; }
    /*more models to be added */
}
ShortList.cshtml

@model IEnumerable<JaniesWebLive.ViewModel.ProductPageViewModel>

   @foreach (var item in Model)
    {
        <div class="row">
            <div class="col-md-4 col-sm-6 col-xs-12">
            <p><img class="product-image" src=@Html.DisplayFor(modelItem => item.ProductMedium) /></p><br />
            <h3>@Html.DisplayFor(modelItem => item.WpProductId)</h3>
            <h5>@Html.DisplayFor(modelItem => item.Price1)</h5>
            <h6>@Html.DisplayFor(modelItem => item.ProdDescShort)</h6>
            <p class="text-center">@Html.DisplayFor(modelItem => item.ProdDescLong)</p>
            <p>
                <button class="text-right btn btn-link">SHORT LIST</button>
            </p>
        </div>
    </div>
 }
@model JaniesWebLive.Models.Products

@foreach (var item in Model)
{
    <div class="row">
        <div class="col-md-4 col-sm-6 col-xs-12">
            <p><img class="product-image" src=@Html.DisplayFor(modelItem => item.ProductMedium) /></p>
            <h3>@Html.DisplayFor(modelItem => item.WpProductId)</h3>
            <h5>@Html.DisplayFor(modelItem => item.Price1)</h5>
            <h6>@Html.DisplayFor(modelItem => item.ProdDescShort)</h6>
            <p class="text-center">@Html.DisplayFor(modelItem => item.ProdDescLong)</p>
            <p>
                <button class="text-right btn btn-link">LONG LIST</button>
            </p>
        </div>
    </div>
}
LongList.cshtml

@model IEnumerable<JaniesWebLive.ViewModel.ProductPageViewModel>

   @foreach (var item in Model)
    {
        <div class="row">
            <div class="col-md-4 col-sm-6 col-xs-12">
            <p><img class="product-image" src=@Html.DisplayFor(modelItem => item.ProductMedium) /></p><br />
            <h3>@Html.DisplayFor(modelItem => item.WpProductId)</h3>
            <h5>@Html.DisplayFor(modelItem => item.Price1)</h5>
            <h6>@Html.DisplayFor(modelItem => item.ProdDescShort)</h6>
            <p class="text-center">@Html.DisplayFor(modelItem => item.ProdDescLong)</p>
            <p>
                <button class="text-right btn btn-link">SHORT LIST</button>
            </p>
        </div>
    </div>
 }
@model JaniesWebLive.Models.Products

@foreach (var item in Model)
{
    <div class="row">
        <div class="col-md-4 col-sm-6 col-xs-12">
            <p><img class="product-image" src=@Html.DisplayFor(modelItem => item.ProductMedium) /></p>
            <h3>@Html.DisplayFor(modelItem => item.WpProductId)</h3>
            <h5>@Html.DisplayFor(modelItem => item.Price1)</h5>
            <h6>@Html.DisplayFor(modelItem => item.ProdDescShort)</h6>
            <p class="text-center">@Html.DisplayFor(modelItem => item.ProdDescLong)</p>
            <p>
                <button class="text-right btn btn-link">LONG LIST</button>
            </p>
        </div>
    </div>
}

@model JaniesWebLive.Models.Products
@foreach(模型中的var项目)
{
项目.生产介质)/>

@DisplayFor(modelItem=>item.WpProductId) @DisplayFor(modelItem=>item.Price1) @DisplayFor(modelItem=>item.ProdDescShort)

@Html.DisplayFor(modelItem=>item.ProdDescLong)

长长的名单

}
您需要将视图更改为

@model JaniesWebLive.ViewModel.ProductPageViewModel

   @foreach (var item in Model.Products )
    {
        <div class="row">
            <div class="col-md-4 col-sm-6 col-xs-12">
            <p><img class="product-image" src=@Html.DisplayFor(modelItem => item.ProductMedium) /></p><br />
            <h3>@Html.DisplayFor(modelItem => item.WpProductId)</h3>
            <h5>@Html.DisplayFor(modelItem => item.Price1)</h5>
            <h6>@Html.DisplayFor(modelItem => item.ProdDescShort)</h6>
            <p class="text-center">@Html.DisplayFor(modelItem => item.ProdDescLong)</p>
            <p>
                <button class="text-right btn btn-link">SHORT LIST</button>
            </p>
        </div>
    </div>
 }
@model JaniesWebLive.ViewModel.ProductPageViewModel
@foreach(Model.Products中的var项)
{
item.ProductMedium)/>


@DisplayFor(modelItem=>item.WpProductId) @DisplayFor(modelItem=>item.Price1) @DisplayFor(modelItem=>item.ProdDescShort)

@Html.DisplayFor(modelItem=>item.ProdDescLong)

短名单

}

由于upr视图模型是一个包含列表属性的单个对象,因此您需要写入该属性,而不是整个模型

您的
LongList.cshtml
文件将该模型作为单个
产品
-您不能循环通过单个对象
@model JaniesWebLive.Models.Products
需要单个
产品
不是
产品的集合
。如果您想使用集合,只需更改为
@model IEnumerable
。谢谢Rahul。我知道这是件小事。没想到这么小。我又有进步了。