System.Web.HttpException / 将代码转换为合适的 MVC 架构
System.Web.HttpException / Converting code to proper MVC architecture
我的团队一直致力于为学校项目构建评论部分并以局部视图呈现它。
这是我想出的解决方案:
在索引页上:
@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")
所有其他代码不变。
抛出以下错误:
An exception of type 'System.Web.HttpException' occurred in System.Web.dll but was not handled in user code
Additional information: Error executing child request for handler 'System.Web.Mvc.HttpHandlerUtil+ServerExecuteHttpHandlerAsyncWrapper'.
任何人都可以向我解释我做错了什么吗?
我意识到哪里不对了。
我改变了...
@model Project.Services.StatusServices
@foreach (var status in Model.GetAllUserStatuses())
{...
...进入...
@model List<Project.Models.UserStatus>
@foreach (var status in Model)
{...
还有一些小的修复,比如将 ActionResult 变成 PartialViewResult,但我不知道这是否是代码工作所必需的。
我的团队一直致力于为学校项目构建评论部分并以局部视图呈现它。
这是我想出的解决方案:
在索引页上:
@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")
所有其他代码不变。
抛出以下错误:
An exception of type 'System.Web.HttpException' occurred in System.Web.dll but was not handled in user code
Additional information: Error executing child request for handler 'System.Web.Mvc.HttpHandlerUtil+ServerExecuteHttpHandlerAsyncWrapper'.
任何人都可以向我解释我做错了什么吗?
我意识到哪里不对了。
我改变了...
@model Project.Services.StatusServices
@foreach (var status in Model.GetAllUserStatuses())
{...
...进入...
@model List<Project.Models.UserStatus>
@foreach (var status in Model)
{...
还有一些小的修复,比如将 ActionResult 变成 PartialViewResult,但我不知道这是否是代码工作所必需的。