У меня есть две таблицы, Product
& ProductImages
Pass IEnumerable ViewModel для просмотра
+---PRODUCT----+
| ID |
| Name |
```````````````
+---PRODUCT Images----+
| ID |
| ProductId |
| URL |
```````````````````````
Я хочу, чтобы отобразить данные в моем Index View
из обоих таблиц с помощью ViewModel
Вот мой ViewModel
public class ProductDisplayViewModel{
public int ProductId { get; set; }
public string Name {get; set;}
public string ImageUrl { get; set; }
}
public class ProductIenumViewModel
{
public IEnumerable<ProductDisplayViewModel> productDisplayViewModel { get; set; }
}
Это мой контроллер
public ActionResult Index()
{
var product = new ProductDisplayViewModel
{
//ProductId = db.Products.Select(s => s.Id).ToString,
Name = db.Products.Select(s => s.Name).ToString(),
ImageUrl = db.ProductImages.Select(s => s.URL).ToString()
};
var productIenumViewModel = new ProductIenumViewModel
{
productDisplayViewModel = new List<ProductDisplayViewModel> { product }
};
return View(productIenumViewModel);
}
Но я получаю ошибку, что я прошел ViewModel.ProductIenumViewModel
, но этот словарь требует модель элемента типа 'System.Collections.Generic.IEnumerable 1[ViewModel.ProductDisplayViewModel]'
, если я использую productDisplayViewModel = IEnumerable<ProductDisplayViewModel> product
в моем контроллере я получаю ошибку, что ProductDisplayViewModel
является типом, но используется как переменная
Редактировать Это мой взгляд
@model IEnumerable<MyApp.Areas.Admin.ViewModel.ProductDisplayViewModel>
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
<p>
@Html.ActionLink("Create New", "Create")
</p>
<table class="table table-bordered table-striped" >
<tr>
<th>
@Html.DisplayNameFor(model => model.Name)
</th>
<th>
@Html.DisplayNameFor(model => model.ImageUrl)
</th>
<th></th>
</tr>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.Name)
@Html.DisplayFor(modelItem => item.ImageUrl)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id=item.ProductId }) |
@Html.ActionLink("Details", "Details", new { id=item.ProductId }) |
@Html.ActionLink("Delete", "Delete", new { id=item.ProductId })
</td>
</tr>
}
</table>
Что с вашей точки зрения заявление? – SLaks
Похоже, что модель вашего представления 'IEnumerable', где она должна быть просто 'ProductIEnumViewModel'. Или, что еще лучше, избавиться от 'ProductIEnumViewModel' и использовать' IEnumerable 'в качестве вашей модели. –
Во-вторых, было бы неплохо увидеть представление. Кроме того, похоже, что вы разделили довольно часть действия контроллера, но теперь код не имеет особого смысла, поскольку вряд ли даже он будет строить ... –