【发布时间】:2015-04-21 07:01:24
【问题描述】:
我在尝试渲染局部视图时不断收到错误消息:
“System.InvalidOperationException”类型的异常发生在 System.Web.Mvc.dll 但未在用户代码中处理
附加信息:传入字典的模型项是 类型 'System.Data.Entity.DynamicProxies.Post_206B6491B2DC6BC95A9910F33BF20B9F1973E064A753CBEDF9E6C72F08A98532', 但是这本字典需要一个类型的模型项 'System.Collections.Generic.IEnumerable`1[MyBlogger.Post]'。
部分视图:
IEnumerable<MyBlogger.Post>
@foreach (var item in Model) {
<p class="text-left">Similar Article: <a href="#">@Html.DisplayFor(modelItem => item.Title)</a></p>
}
主要详情视图:
@model MyBlogger.Post
@{
ViewBag.Title = "MainDetails";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>@Html.DisplayFor(model => model.Title)</h2>
<header class="intro-header">
<div class="container">
<div class="row">
<div>
<div class="post-heading">
@*<a href="#">*@
<img class="img-responsive" src="~/Content/img/post-bg.jpg" alt="">
<h1>@Html.DisplayFor(model => model.ShortDescription)</h1>
<p class="text-left">Posted by <a href="#">@Html.DisplayFor(model => model.BlogUserEmail)</a> on @Html.DisplayFor(model => model.PostedOn)</p>
<p class="text-left">Category <a href="#">@Html.DisplayFor(model => model.Category.Name)</a></p>
@*</a>*@
</div>
</div>
</div>
</div>
</header>
<fieldset>
<div class="display-field">
@*@Html.DisplayFor(model => model.BlogUserEmail)*@
</div>
<div class="display-field">
@Html.Raw(HttpUtility.HtmlDecode(Model.Description))
</div>
<div class="display-field">
@Html.DisplayFor(model => model.Modified)
</div>
</fieldset>
@Html.Partial("SimilarPosts") // here
MainDetails 操作:
public ActionResult MainDetails(string urlslug)
{
Post post = db.Posts.First(m => m.UrlSlug == urlslug);
if (post == null)
{
return HttpNotFound();
}
return View(post);
}
【问题讨论】:
-
我的 IEnumerable
中的 Foreach 项目显示每个帖子的标题? -
您将单个
Post返回到视图,然后调用一个期望Post集合的部分。 typeofPost本身是否包含IEnumerable<Post>的属性? -
我如何尝试 ViewBag.posts = db.Posts.ToList();和 @Html.Partial("SimilarPosts", ViewData.ToList()) 仍然无法将任何内容返回到部分。
-
我不知道你如何定义你的“相似帖子”。假设您将渲染所有帖子(就像您在评论中写的那样)。在
MainDetails操作中写入:ViewBag.posts = db.Posts.ToList();。然后,在您的MainDetails.cshtml中,将这一行@Html.Partial("SimilarPosts") // here替换为这一行@Html.Partial("SimilarPosts", ViewBag.posts) // here。请注意,我将存储在ViewBag中的帖子作为Partial方法的模型传递。
标签: c# .net asp.net-mvc linq razor