在视图中执行处理程序的子请求时出错
本文关键字:请求 出错 程序 视图 执行 处理 | 更新日期: 2023-09-27 18:34:30
我有一个 MVC 4 视图,我在其中渲染以下操作
@{
Html.RenderAction("Index", "Logo");
Html.RenderAction("Index", "MainMenu");
}
我有一个表格,填写并发布到控制器。在控制器中,我执行一些任务,然后将模型发送回我的视图
[HttpPost]
public ActionResult Index(ManageAdministratorModel manageAdministratorModel)
{
// I save some of the fields to the database here.
return View(manageAdministratorModel);
}
当我被重定向到视图时,我收到以下错误
执行处理程序"System.Web.Mvc.HttpHandlerUtil+ServerExecuteHttpHandlerAsyncWrapper"的子请求时出错。
在这一行
Html.RenderAction("Index", "Logo");
知道为什么会这样吗?
好的,我发现了问题,希望这将对将来的某人有所帮助。
每个分部视图的控制器都包含 [HttpGet]
属性。例如
[HttpGet]
public ActionResult Index()
{
}
我从两个控制器中删除了该属性
public ActionResult Index()
{
}
现在一切都在工作。
的部分视图中存在代码格式错误时,我的剃须刀中刚刚发生了此错误。
如果单击"继续"以消除错误,您将在加载错误的浏览器窗口中看到实际错误消息。
更正部分视图中的错误,它将起作用!
替换:
return View(manageAdministratorModel);
跟:
return PartialView(manageAdministratorModel);
否则,您可能会以无限循环结束,因为您正在渲染一个试图渲染一个试图呈现视图的视图,...
此外,您可能需要从子操作中删除 [HttpPost]
属性。
"仅限子操作"的示例如下:
public class FiltersController : Controller
{
public ActionResult Index()
{
return View();
}
[ChildActionOnly]
public ActionResult Departments()
{
string s = "Mahi and kallu";
return View(s);
}
}
**for this am creating 2 views**
1) Index:
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
</head>
<body>
<div>
@Html.Partial("Departments","Filters")
</body>
</html>
**and for Departments View:**
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Departments</title>
</head>
<body>
<div>
@Model
</div>
</body>
</html>
the ***childactions*** can be rendered with the help of "Partial" keyword.
我遇到了同样的错误。当我将操作更改为另一个控制器时,它就开始了,因此在运行时程序无法在文件夹中找到视图。因此,如果将操作移动到另一个控制器,则还要将视图移动到相应文件夹的控制器。
删除子视图中的布局@{ Layout = null; }
。
我遇到了同样的问题,但我将 [HTTPGet] 属性放在函数名称上,它对我有用。
[HttpGet]
//for Filter parital view
[ChildActionOnly]
public ActionResult Filter()
{
// Your code will come here.
}
我遇到了完全相同的问题,因为我使用的是属性路由,所以内部异常错误消息是:
No matching action was found on controller ''.
This can happen when a controller uses RouteAttribute for routing,
but no action on that controller matches the request.
从 Html.Action(( 调用的操作方法中删除 [HttpGet] 属性,它就可以工作了。与路由无关。
我得到了这个错误,但我的问题不同。要查看错误是什么,请在 try catch 代码中涉及您收到错误的行,如下所示:
try
{
@Html.RenderAction("Index", "Logo", new {id = Model.id});
}
catch (Exception e)
{
throw;
}
在抛出线上使用断点执行它,并检查"e"的内部异常。我的问题是我更改了控制器上的参数名称,但忘记在视图上更改它。
使用 try catch 更容易获得错误。
我遇到了这个问题,这可能是因为渲染引擎找不到任何视图(对应于acton中给出的名称(我给出了错误的视图名称(我错误地给出了操作名称而不是视图名称(当我使用PartialView()
方法返回视图名称和视图模型时,我更正了我的视图名称,它工作正常
这发生在我身上,因为我从不同的区域调用视图。
我想呼叫的视图不在区域内,因此当从所有区域之外调用它时,例如
@Html.RenderAction("Index", "Logo");
可以毫无问题地工作。
但是,当我想从一个区域内的另一个视图调用相同的视图时,我必须在调用中添加一些附加信息以使其明确:
@Html.RenderAction("Index", "Logo", new { area = "" });
就我而言,我将以下代码添加到 Global.asax.cs:
protected void Application_Error(object sender, EventArgs e)
{
var ex = Server.GetLastError();
...
}
然后我在那里添加了一个断点,并看到前任的 InnerException 是 SQL DB 连接错误。所以我用我的本地开发文件替换了我的 Web.config 文件,并带有正确的连接字符串,问题就消失了。