31

我有一个 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");

知道为什么会这样吗?

4

12 回答 12

36

好的,我发现了问题,希望这对将来的人有所帮助。

每个分部视图的控制器都包含该[HttpGet]属性。例如

[HttpGet]
public ActionResult Index()
{
}

我从两个控制器中删除了属性

public ActionResult Index()
{
}

现在一切正常。

于 2013-10-09T14:08:42.797 回答
27

当我的部分视图中出现代码格式错误时,我的剃须刀中出现了这个错误。

如果您单击“继续”以克服错误,您将在加载它的浏览器窗口中看到实际的错误消息。

更正局部视图中的错误,它将起作用!

于 2014-12-19T16:27:17.017 回答
9

代替:

return View(manageAdministratorModel);

和:

return PartialView(manageAdministratorModel);

否则你可能会以无限循环结束,因为你正在渲染一个试图渲染一个试图渲染一个视图的视图的视图,......

此外,您可能需要[HttpPost]从子操作中删除该属性。

于 2013-10-09T13:05:43.137 回答
2

“仅限儿童操作”的示例是:

     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.
于 2015-10-16T12:17:24.323 回答
2

摆脱 @{ Layout = null; }子视图中的布局。

于 2016-07-30T22:25:01.783 回答
2

我遇到了同样的问题,但我将 [HTTPGet] 属性放在函数名称上,它对我有用。

[HttpGet]
//for Filter parital view
[ChildActionOnly]
public ActionResult Filter()
{ 
  // Your code will come here.
}
于 2016-10-15T05:58:08.817 回答
1

这发生在我身上,因为我是从不同的区域调用视图。

我想调用的视图不在一个区域内,所以当从所有区域之外调用它时,调用

@Html.RenderAction("Index", "Logo");

可以毫无问题地工作。

但是当我想从一个区域内的另一个视图调用相同的视图时,我必须在调用中添加一些额外的信息以使其明确:

@Html.RenderAction("Index", "Logo", new { area = "" });

于 2018-03-20T10:38:57.013 回答
1

我遇到了这个问题,这可能是因为渲染引擎找不到任何视图(对应于动作中给出的名称)我给出了错误的视图名称(我错误地给出了动作名称而不是视图名称)当我使用方法返回视图名称和视图模型 PartialView(),我更正了我的视图名称,它工作正常

于 2017-02-07T06:53:18.880 回答
1

我遇到了完全相同的问题,并且因为我使用的是属性路由,所以内部异常错误消息是:

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] 属性,它可以工作。与路由无关。

于 2015-10-20T21:48:13.627 回答
1

我有同样的错误。它开始于我将操作更改为另一个控制器时,因此在运行程序时无法在文件夹中找到视图。因此,如果您将操作移动到另一个控制器,也将视图移动到相应文件夹的控制器

于 2016-05-12T14:34:59.537 回答
1

我得到了这个错误,但我的问题是不同的。要查看错误是什么,请在 try catch 代码中包含您得到错误的行,如下所示:

 try 
    {           
         @Html.RenderAction("Index", "Logo", new {id = Model.id});
    }
    catch (Exception e)
    {
        throw;
    }    

在 throw 行用断点执行它并检查“e”的内部异常。我的问题是我更改了控制器上的参数名称而忘记在我的视图上更改它。

使用 try catch 更容易得到错误。

于 2016-07-29T16:31:11.230 回答
0

就我而言,我将以下代码添加到 Global.asax.cs 中:

protected void Application_Error(object sender, EventArgs e)
{
    var ex = Server.GetLastError();
    ...
}

然后我在那里添加了一个断点,看到前任的 InnerException 是SQL DB 连接错误。所以我用正确的连接字符串用我的本地开发文件替换了我的 Web.config 文件,问题就消失了。

于 2019-09-29T19:57:34.820 回答