【问题标题】:Html.Action throwing exception: An exception of type 'System.Web.HttpException' occurred in System.Web.dllHtml.Action 抛出异常:System.Web.dll 中发生“System.Web.HttpException”类型的异常
【发布时间】:2015-05-06 06:47:34
【问题描述】:

我在博客的主布局中收到来自 @Html.Action("getCategory", "Blogs") 的此错误。

错误是:

System.Web.dll 中出现“System.Web.HttpException”类型的异常,但未在用户代码中处理 附加信息:执行处理程序“System.Web.Mvc.HttpHandlerUtil+ServerExecuteHttpHandlerAsyncWrapper”的子请求时出错。

这是我的控制器:

public ActionResult getCategory()
    {
        var categories = _repo.getBlogs().Select(c => new
        {
            c.Category
        }).ToList();
        return PartialView("_category", categories);
    }

这是我的部分观点:

@model  IEnumerable<MainSite.Data.Blog>

<div class="sw_categories">
<div class="sw_title">
    <h4>Categories</h4>
</div>
<ul class="arrows_list">
    @foreach (var c in Model)
    {
        <li><a href="#">@c</a></li>
    }
</ul>
</div>

我是 ASP.NET MVC 的新手,谁能向我解释一下这个错误以及如何解决这个问题?

【问题讨论】:

  • getCategory() 是返回博客还是类别?根据您的部分,它应该是 Blogs
  • 您返回了一组匿名对象(它们是内部的,因此无论如何都无法在视图中访问)但您的视图期待 IEnumerable&lt;Blog&gt;
  • @Mackan 哎呀我从来没有注意到这一点。我改变了类型,它现在可以工作了。您能否在下面发帖,以便我将其标记为已回答?非常感谢。
  • @StephenMuecke 我很好奇您的陈述“...匿名对象(它们是内部的,因此无论如何都无法在视图中访问)”。根据 In206 的评论,当他更改 type 时,它似乎绑定得很好(并且我假设部分模型类型)。我不明白你写的“内部”位,当我不明白时,我想学习:) 最初我只是将其视为错误的返回类型:类别而不是博客。但是,正如我所解释的那样,您是说两种方式都没有类别列表(?)。
  • 我没有意识到 Select(c =&gt; new { c.Category }) 在您的情况下会返回 Blog 的集合(或者是 Category 并且您更改了视图中模型的定义?)。无论如何,我所指的是this answer

标签: c# asp.net-mvc asp.net-mvc-5


【解决方案1】:

你会想要的..

  1. getCategory() 返回一组博客,因为这是您的部分所期望的:

    IEnumerable<MainSite.Data.Blog>  
    
  2. 或更改部分中的模型类型以与您从getCategory() 返回的内容相对应。示例:

    IEnumerable<MainSite.Data.Blog.Category> 
    

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-24
    • 2021-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多