【发布时间】:2013-12-17 13:15:42
【问题描述】:
我使用 ASP.Net MVC5 (VS 2013) 创建了一个网站,但我猜同样的问题会出现在 MVC3 或 MVC4 中
我有以下看法:
@model IEnumerable<WilhanWebsite.Models.TestimonialViewModel>
@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>Index</h2>
<p>
@Html.ActionLink("Create New", "Create")
</p>
<table class="table">
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.Testimonial.Description)
</td>
<td>
@Html.DisplayFor(modelItem => item.Testimonial.Author)
</td>
<td>
@Html.DisplayFor(modelItem => item.Testimonial.Timestamp)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id=item.Testimonial.TestimonialId }) |
@Html.ActionLink("Details", "Details", new { id=item.Testimonial.TestimonialId }) |
@Html.ActionLink("Delete", "Delete", new { id=item.Testimonial.TestimonialId })
</td>
</tr>
}
</table>
我的 Testimonial 控制器的 Index 操作发送回一个列表,视图在 html 表中正确显示现有的推荐。我的问题是,当我单击编辑超链接时,出现以下错误:
传入字典的模型项是类型 'WilhanWebsite.DomainClasses.Testimonial',但是这本词典 需要类型的模型项目 'WilhanWebsite.Models.TestimonialViewModel'
我以前使用 DomainClasses.Testimonial 作为模型在控制器和视图之间传递,但今天我重构以创建新的专用视图模型。显示数据时视图很乐意处理新视图模型似乎很奇怪,那么为什么当我单击编辑链接时它会传递旧的 DomainClasses.Testimonial ?
非常感谢任何帮助!
【问题讨论】:
-
您的编辑操作和视图是什么样的(代码)?
-
您的编辑操作发送了错误的模型类型,或者您的视图被编码为接受错误的模型类型。这与您的索引视图无关。
-
抱歉耽搁了,感谢您的回复。你说的都是对的 - 问题出在我的控制器的编辑操作上。
标签: asp.net-mvc asp.net-mvc-4 view model asp.net-mvc-5