asp.net-core-mvc - Microsoft.AspNetCore.Mvc.ViewFeatures.ViewDataDictionary.EnsureCompatible(对象值)
问题描述
这是我得到的错误;请告诉我如何解决它:
InvalidOperationException:传递到 ViewDataDictionary 的模型项的类型为“System.Collections.Generic.List
1[AgricultureFarming.Models.AddToCart]', but this ViewDataDictionary instance requires a model item of type 'System.Collections.Generic.IEnumerable
1[AgricultureFarming.Models.Order]”}
我的索引视图页面代码我想在 Addtocart 模型的订单索引页面中显示产品
@model IEnumerable<AgricultureFarming.Models.Order>
@{
ViewData["Title"] = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h1>Index</h1>
<p>
<a asp-action="Create">Create New</a>
</p>
<div class="container">
<div class="row">
<div>
<table class="table">
<tbody>
@foreach (var item in Model)
{
<tr>
<td>
<img src="~/Images/@item.AddToCarts.Products.Image_path" class="img-fluid" style="height:50px;width:85px;" asp-append-version="true" />
</td>
<td>
<b>
@Html.DisplayFor(modelItem => item.AddToCarts.Products.Product_Name)
</b>
</td>
<td>
1 KG = @Html.DisplayFor(modelItem => item.AddToCarts.Products.Price)
</td>
<td>
@Html.DisplayFor(modelItem => item.AddToCarts.Quantity)
</td>
<td>
@(item.AddToCarts.Quantity* item.AddToCarts.Products.Price)
</td>
</tr>
}
</tbody>
<tfoot>
<tr>
<td></td>
<td></td>
<td></td>
<td><b>Sub Total</b></td>
<td>@Model.Sum(i => i.AddToCarts.Quantity * i.AddToCarts.Products.Price) TK</td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td><b>Delivery Charge</b></td>
<td><text id="DeliveryCharge"></text></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td><b>Total Amount</b></td>
<td><text id="Total">@Model.Sum(i => i.AddToCarts.Quantity * i.AddToCarts.Products.Price) TK</text></td>
</tr>
</tfoot>
</table>
</div>
<div class="form-group col-md-3">
<div>
<select id="CountryList" class="form-control" asp-items="ViewBag.CountryList"></select>
</div>
<div class="form-group col-md-3"></div>
<div>
<select id="CityList" class="form-control"></select>
<br />
<text>Address:</text>
<br />
<textarea class="form-control"></textarea>
</div>
<div>
<text>Zip Code:</text>
<br />
<input type="text" name="name" value="" class="form-control"/>
</div>
</div>
</div>
</div>
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="container">
<div class="row">
<div class="form-group col-md-3 align-self-start">
<select id="CountryList" class="form-control" asp-items="ViewBag.CountryList"></select>
</div>
<div class="form-group col-md-3">
<select id="CityList" class="form-control"></select>
</div>
</div>
</div>
我的模型课:
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace AgricultureFarming.Models
{
public class Order
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public string Id { get; set; }
[Display(Name = "Delivery Charge")]
public int DeliveryChargesId { get; set; }
[Required]
public string UserId { get; set; }
[Display(Name = "Item")]
public string AddToCartsId { get; set; }
[Required]
public string DeliveryAddress { get; set; }
[Required]
[Display(Name = "Total Price")]
[Column(TypeName = "decimal(10,2)")]
public decimal TotalAmount { get; set; }
[Required]
public DateTime OrderDate { get; set; }
public DeliveryCharge DeliveryCharges { get; set; }
public AddToCart AddToCarts { get; set; }
}
}
解决方案
您Index action
返回AddToCart collection
类型,因此您的视图应该用于@model AgricultureFarming.Models.AddToCart
接收。
为了解决这个问题,改变索引视图代码如下:
@model IEnumerable<AgricultureFarming.Models.AddToCart>
@{
ViewData["Title"] = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h1>Index</h1>
<p>
<a asp-action="Create">Create New</a>
</p>
<div class="container">
<div class="row">
<div>
<table class="table">
<tbody>
@foreach (var item in Model)
{
<tr>
<td>
<img src="~/pics/@item.Products.Image_path" class="img-fluid" style="height:50px;width:85px;" asp-append-version="true" />
</td>
<td>
<b>
@Html.DisplayFor(modelItem => item.Products.Product_Name)
</b>
</td>
<td>
1 KG = @Html.DisplayFor(modelItem => item.Products.Price)
</td>
<td>
@Html.DisplayFor(modelItem => item.Quantity)
</td>
<td>
@(item.Quantity* item.Products.Price)
</td>
</tr>
}
</tbody>
<tfoot>
<tr>
<td></td>
<td></td>
<td></td>
<td><b>Sub Total</b></td>
<td>@Model.Sum(i => i.Quantity * i.Products.Price) TK</td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td><b>Delivery Charge</b></td>
<td><text id="DeliveryCharge"></text></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td><b>Total Amount</b></td>
<td><text id="Total">@Model.Sum(i => i.Quantity * i.Products.Price) TK</text></td>
</tr>
</tfoot>
</table>
</div>
<div class="form-group col-md-3">
<div>
<select id="CountryList" class="form-control" asp-items="ViewBag.CountryList"></select>
</div>
<div class="form-group col-md-3"></div>
<div>
<select id="CityList" class="form-control"></select>
<br />
<text>Address:</text>
<br />
<textarea class="form-control"></textarea>
</div>
<div>
<text>Zip Code:</text>
<br />
<input type="text" name="name" value="" class="form-control" />
</div>
</div>
</div>
</div>
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="container">
<div class="row">
<div class="form-group col-md-3 align-self-start">
<select id="CountryList" class="form-control" asp-items="ViewBag.CountryList"></select>
</div>
<div class="form-group col-md-3">
<select id="CityList" class="form-control"></select>
</div>
</div>
</div>```
这是测试结果:
推荐阅读
- stripe-payments - 如何使用条纹保存卡片详细信息?
- python - TypeError: 'function' 类型的对象在使用 BeautifulSoup 和 FancyURLopener 时没有 len()
- python - 嵌套json响应以在python中获取数据表单站点
- ruby-on-rails - 如何在rails应用程序中的按钮上传递id?
- javascript - JavaScript:不断改变字符
- video - 在视频数据集上训练?
- php - move_uploaded_file 返回 true 但不执行 if 语句
- javascript - 如何将身份验证详细信息传递给 iframe 内的应用程序?
- vim - vim - 如何查询终端缓冲区的密码?
- python - 如何在 Visual Studio 代码的 Python 扩展中选择子文件夹作为包含测试的目录