System.Web.HttpException /将代码转换为适当的MVC架构

时间:2015-05-11 14:36:09

标签: asp.net-mvc-5 asp.net-mvc-partialview httpexception

我的团队一直致力于为学校项目构建评论部分,并在局部视图中进行渲染。

这是我提出的解决方案:

在索引页面上:

@Html.Partial("StatusWall", new Project.Services.StatusServices())

StatusWall:

@model Project.Services.StatusServices

@foreach (var status in Model.GetAllUserStatuses())
{...

StatusService中的代码:

public List<UserStatus> GetAllUserStatuses()
    {
        //check
        var StatusResult = (from status in db.UserStatuses
                            orderby status.DateInserted descending
                            select status).ToList();
        return StatusResult;
    }

这很有效,但问题是我们没有使用正确的MVC架构,因为我们绕过了控制器。由于我们项目的设计要求我使用局部视图,我不知道如何调用控制器,直到我的助手指出[ChildActionOnly]属性

现在,我正在尝试将代码合并到MVC模型中,但到目前为止,解决方案还没有找到我。

这是我在Controller中写的内容:

    [ChildActionOnly]
    public ActionResult StatusWall() {
        var service = new StatusServices();
        var result = service.GetAllUserStatuses();
        return PartialView(result);
    }

索引页:

@Html.Action("StatusWall")

所有其他代码均未更改。

这会抛出以下错误:

  

System.Web.dll中发生了'System.Web.HttpException'类型的异常,但未在用户代码中处理

     

其他信息:执行处理程序'System.Web.Mvc.HttpHandlerUtil + ServerExecuteHttpHandlerAsyncWrapper'的子请求时出错。

任何人都可以向我解释我做错了吗?

1 个答案:

答案 0 :(得分:2)

我意识到出了什么问题。

我改变了......

@model Project.Services.StatusServices

@foreach (var status in Model.GetAllUserStatuses())
{...

... INTO ...

@model List<Project.Models.UserStatus>

@foreach (var status in Model)
{...

还有一些小修复,比如将ActionResult转换为PartialViewResult,但我不知道代码是否有必要这样做。