传入 ViewDataDictionary 的模型项是错误类型
The model item passed into the ViewDataDictionary is of type Error
我的应用程序可能不好我正在努力学习
这个错误的解决方案是什么?
The error i got
控制器
我不知道如何列出清单,我试过的例子没有用
我想我需要以某种方式列一个清单
public IActionResult Rooms()
{
using (var db = new HotelWebContext())
{
var roomList = db.Rooms.Where(z => z.OtherTypeId == z.OtherType.OtherTypeId && z.RoomTypeId == z.RoomType.RoomTypeId && z.StatusId == z.Status.RoomStatusId).Select(r => new { r.RoomId, r.OtherType.OtherTypeName, r.OtherType.BasePrice, r.OtherType.Capacity, r.OtherType.BedType, r.OtherType.Services, r.RoomType.RoomTypeName, r.Status.RoomStatusName }).ToList();
return View(roomList);
}
}
型号
我使用 entity framework
自动创建了它
public partial class Room
{
public Room()
{
Reservations = new HashSet<Reservation>();
}
public int RoomId { get; set; }
public int? RoomTypeId { get; set; }
public int? OtherTypeId { get; set; }
public int? StatusId { get; set; }
public virtual OtherType OtherType { get; set; }
public virtual RoomType RoomType { get; set; }
public virtual RoomStatus Status { get; set; }
public virtual ICollection<Reservation> Reservations { get; set; }
}
Rooms.cshtml 有一个 foreach 循环
@model IEnumerable<WebApplication3.Models.Room>
@{
ViewData["Title"] = "Odalarımız";
ViewData["Dark"] = "text-dark";
ViewData["Info"] = "text-info";
}
<div class="odafiyatlari mx-auto">
<div class="odaimg">
<div class="container">
<h1 style="margin-top: 200px; margin-bottom: 200px;font-family: 'Playfair Display', serif;" class="text-center text-dark ">ODALARIMIZ</h1>
<div class="row">
<!-- @for (int i = 0; i < 0; i++)
{
<div class="col-xl-4 py-4">
<div style="border-radius: 10px;" class="card mx-auto" style="width: 18rem;">
<img class="card-img-top " src="~/images/oda1.jpg" alt="Card image cap">
<div class="card-body">
<h6 class="card-text">Durum:Uygun</h6><br>
<h5 class="card-title">İki Kişilik İkiz Yataklı Oda</h5>
<h5 class="card-title">Oda Tipi:Aile</h5>
<h6 class="card-text">399₺ / Gecelik</h6><br>
<h6 class="card-text">Kapasite: İki Kişilik</h6><br>
<h6 class="card-text">Yatak: Kral Yatak</h6><br>
<h6 class="card-text">Servis: İnternet, Televizyon, Duş</h6><br>
<a href="#" class="btn btn-info">Odayı Seç</a>
</div>
</div>
</div>
}-->
@foreach (var item in Model)
{
<div class="col-xl-4 py-4">
<div style="border-radius: 10px;" class="card mx-auto" style="width: 18rem;">
<img class="card-img-top " src="~/images/oda1.jpg" alt="Card image cap">
<div class="card-body">
<h6 class="card-text">Durum:@item.Status.RoomStatusName</h6><br>
<h5 class="card-title">@item.OtherType.OtherTypeName</h5>
<h5 class="card-title">Oda Tipi:@item.RoomType.RoomTypeName</h5>
<h6 class="card-text">@item.OtherType.BasePrice₺ / Gecelik</h6><br>
<h6 class="card-text">Kapasite: @item.OtherType.Capacity</h6><br>
<h6 class="card-text">Yatak: @item.OtherType.BedType</h6><br>
<h6 class="card-text">Servis: @item.OtherType.Services</h6><br>
<a href="#" class="btn btn-info">Odayı Seç</a>
</div>
</div>
</div>
}
</div>
</div>
</div>
</div>
<!--ODA BİTİŞ-->
Model
您正在通过调用
将您的房间投影到一个具有值的新匿名对象中
.Select(r => new { r.RoomId, r.OtherType.OtherTypeName, r.OtherType.BasePrice, r.OtherType.Capacity, r.OtherType.BedType, r.OtherType.Services, r.RoomType.RoomTypeName, r.Status.RoomStatusName })
现在你得到了一个匿名类型的 IEnumerable。
但是该操作需要 return 个 IEnumerable 房间。
只需删除 select 你应该就好了,因为你正在从房间 table.
中检索
您传递给视图的列表应该是房间类型 Class。
您需要使用 .Include()
方法来包含如下相关模型:
var model = db.Rooms
.Where(z => z.OtherTypeId == z.OtherType.OtherTypeId && z.RoomTypeId == z.RoomType.RoomTypeId && z.StatusId == z.Status.RoomStatusId)
.Include(r=>r.OtherType)
.Include(r=>r.RoomType)
.Include(r=>r.Status)
.ToList();
我的应用程序可能不好我正在努力学习 这个错误的解决方案是什么? The error i got
控制器 我不知道如何列出清单,我试过的例子没有用 我想我需要以某种方式列一个清单
public IActionResult Rooms()
{
using (var db = new HotelWebContext())
{
var roomList = db.Rooms.Where(z => z.OtherTypeId == z.OtherType.OtherTypeId && z.RoomTypeId == z.RoomType.RoomTypeId && z.StatusId == z.Status.RoomStatusId).Select(r => new { r.RoomId, r.OtherType.OtherTypeName, r.OtherType.BasePrice, r.OtherType.Capacity, r.OtherType.BedType, r.OtherType.Services, r.RoomType.RoomTypeName, r.Status.RoomStatusName }).ToList();
return View(roomList);
}
}
型号 我使用 entity framework
自动创建了它public partial class Room
{
public Room()
{
Reservations = new HashSet<Reservation>();
}
public int RoomId { get; set; }
public int? RoomTypeId { get; set; }
public int? OtherTypeId { get; set; }
public int? StatusId { get; set; }
public virtual OtherType OtherType { get; set; }
public virtual RoomType RoomType { get; set; }
public virtual RoomStatus Status { get; set; }
public virtual ICollection<Reservation> Reservations { get; set; }
}
Rooms.cshtml 有一个 foreach 循环
@model IEnumerable<WebApplication3.Models.Room>
@{
ViewData["Title"] = "Odalarımız";
ViewData["Dark"] = "text-dark";
ViewData["Info"] = "text-info";
}
<div class="odafiyatlari mx-auto">
<div class="odaimg">
<div class="container">
<h1 style="margin-top: 200px; margin-bottom: 200px;font-family: 'Playfair Display', serif;" class="text-center text-dark ">ODALARIMIZ</h1>
<div class="row">
<!-- @for (int i = 0; i < 0; i++)
{
<div class="col-xl-4 py-4">
<div style="border-radius: 10px;" class="card mx-auto" style="width: 18rem;">
<img class="card-img-top " src="~/images/oda1.jpg" alt="Card image cap">
<div class="card-body">
<h6 class="card-text">Durum:Uygun</h6><br>
<h5 class="card-title">İki Kişilik İkiz Yataklı Oda</h5>
<h5 class="card-title">Oda Tipi:Aile</h5>
<h6 class="card-text">399₺ / Gecelik</h6><br>
<h6 class="card-text">Kapasite: İki Kişilik</h6><br>
<h6 class="card-text">Yatak: Kral Yatak</h6><br>
<h6 class="card-text">Servis: İnternet, Televizyon, Duş</h6><br>
<a href="#" class="btn btn-info">Odayı Seç</a>
</div>
</div>
</div>
}-->
@foreach (var item in Model)
{
<div class="col-xl-4 py-4">
<div style="border-radius: 10px;" class="card mx-auto" style="width: 18rem;">
<img class="card-img-top " src="~/images/oda1.jpg" alt="Card image cap">
<div class="card-body">
<h6 class="card-text">Durum:@item.Status.RoomStatusName</h6><br>
<h5 class="card-title">@item.OtherType.OtherTypeName</h5>
<h5 class="card-title">Oda Tipi:@item.RoomType.RoomTypeName</h5>
<h6 class="card-text">@item.OtherType.BasePrice₺ / Gecelik</h6><br>
<h6 class="card-text">Kapasite: @item.OtherType.Capacity</h6><br>
<h6 class="card-text">Yatak: @item.OtherType.BedType</h6><br>
<h6 class="card-text">Servis: @item.OtherType.Services</h6><br>
<a href="#" class="btn btn-info">Odayı Seç</a>
</div>
</div>
</div>
}
</div>
</div>
</div>
</div>
<!--ODA BİTİŞ-->
Model
您正在通过调用
将您的房间投影到一个具有值的新匿名对象中.Select(r => new { r.RoomId, r.OtherType.OtherTypeName, r.OtherType.BasePrice, r.OtherType.Capacity, r.OtherType.BedType, r.OtherType.Services, r.RoomType.RoomTypeName, r.Status.RoomStatusName })
现在你得到了一个匿名类型的 IEnumerable。 但是该操作需要 return 个 IEnumerable 房间。 只需删除 select 你应该就好了,因为你正在从房间 table.
中检索您传递给视图的列表应该是房间类型 Class。
您需要使用 .Include()
方法来包含如下相关模型:
var model = db.Rooms
.Where(z => z.OtherTypeId == z.OtherType.OtherTypeId && z.RoomTypeId == z.RoomType.RoomTypeId && z.StatusId == z.Status.RoomStatusId)
.Include(r=>r.OtherType)
.Include(r=>r.RoomType)
.Include(r=>r.Status)
.ToList();