我的团队一直在为一个学校项目构建评论部分,并将其呈现为局部视图。
这是我想出的解决方案:
在索引页面上:
@Html.Partial("StatusWall", new Project.Services.StatusServices())
状态墙:
@model Project.Services.StatusServices
@foreach (var status in Model.GetAllUserStatuses())
{...
状态服务中的代码:
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”的子请求时出错。
谁能向我解释我做错了什么?