我知道这个问题已经被问过很多次了,但是我还没有找到一个已经问过的问题来完全解决我的问题。我的问题是,由于某种原因,我无法将继承自预期类型的类型用作模型。
我得到的确切错误是:
The model item passed into the dictionary is of type 'ShoppingDealsClient.Models.ListViewModel`1[ShoppingDealsClient.Models.Deal]', but this dictionary requires a model item of type 'ShoppingDealsClient.Models.ListViewModel`1[ShoppingDealsClient.Models.BaseResponseModel]'.
每当我尝试访问该页面时都会收到此错误http://localhost:50548/Home/Deal
。
让我们看一下Deal.cshtml
页面:
@{
ViewBag.Title = "Deals";
Layout = "~/Views/Shared/_ListLayout.cshtml";
}
它所具有的只是对以下内容的引用_ListLayout.cshtml
:
<!DOCTYPE html>
@{
Layout = "~/Views/Shared/_MenuedLayout.cshtml";
}
@model ShoppingDealsClient.Models.ListViewModel<ShoppingDealsClient.Models.BaseResponseModel>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>@ViewBag.Title</title>
</head>
<body>
<h1>
<span>@ViewBag.Title</span>
<button class='btn btn-primary pull-right'>+ Add New</button>
</h1>
<div>
@RenderBody()
</div>
</body>
</html>
如您所见,_ListLayout.cshtml
页面期望一个ListViewModel<BaseResponseModel>
对象作为其模型。
下面是我返回视图的代码:
public ActionResult Deal()
{
return View(new ListViewModel<Deal>());
}
从哪里Deal
继承BaseResponseModel
。
如您所见,我在Deal()
方法中返回了正确的类型,但我仍然收到这种类型的错误。我对Layout
视图的使用会不会有问题?有没有更好的方法来使用可以接受模型的局部视图?
编辑我的继承
我打算_ListLayout
重新使用它,最终显示所有继承自.的各种不同模型的列表BaseResponseModel
。这就是为什么我所拥有的遗产是必要的。
我是 MVC 开发的新手,所以如果有人知道更好的方法来完成,评论会很有帮助:)