【问题标题】:System.Web.HttpException / Converting code to proper MVC architectureSystem.Web.HttpException / 将代码转换为正确的 MVC 架构
【发布时间】:2015-05-11 14:36:09
【问题描述】:

我的团队一直在为一个学校项目构建评论部分,并将其呈现为局部视图。

这是我想出的解决方案:

在索引页面上:

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

状态墙:

@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 模型中,但到目前为止,我还没有找到解决方案。

这是我在控制器中写的:

    [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”的子请求时出错。

谁能向我解释我做错了什么?

【问题讨论】:

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


    【解决方案1】:

    我意识到出了什么问题。

    我变了……

    @model Project.Services.StatusServices
    
    @foreach (var status in Model.GetAllUserStatuses())
    {...
    

    ...进入...

    @model List<Project.Models.UserStatus>
    
    @foreach (var status in Model)
    {...
    

    还有一些小的修复,比如将 ActionResult 变成 PartialViewResult,但我不知道这是否是代码工作所必需的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-25
      相关资源
      最近更新 更多