Asp.net mvc 从基本控制器渲染操作,获取未定义的路由错误

Asp.net mvc 从基本控制器渲染操作,获取未定义的路由错误,asp.net-mvc,asp.net-mvc-5,attributerouting,Asp.net Mvc,Asp.net Mvc 5,Attributerouting,我有一个基本控制器,我的所有其他控制器都继承自该基本控制器,在该基本控制器中有2个ActionResult,这是我网站上每个页面的公用部分。当我试图使用Html.RenderAction从视图调用这些操作时,我得到了错误 路由表中没有与提供的值匹配的路由 我已经检查了,操作设置为public,并且名称拼写正确。我做错了什么 调用:@{Html.RenderAction(“SectionNavigation”);} 行动: [路线(“分段导航”)] 公共操作结果部分导航() 正如您所看到的,我也在

我有一个基本控制器,我的所有其他控制器都继承自该基本控制器,在该基本控制器中有2个
ActionResult
,这是我网站上每个页面的公用部分。当我试图使用
Html.RenderAction
从视图调用这些操作时,我得到了错误

路由表中没有与提供的值匹配的路由

我已经检查了,
操作
设置为
public
,并且名称拼写正确。我做错了什么

调用:
@{Html.RenderAction(“SectionNavigation”);}

行动:

[路线(“分段导航”)]
公共操作结果部分导航()


正如您所看到的,我也在使用属性路由。我还尝试更新调用,将
Base
指定为控制器,但这没有改变任何内容。

RenderAction方法的第一个参数是操作名称,而不是路由名称

如果渲染的视图使用的控制器不是定义
SectionNavigation
操作的控制器,则还必须指定控制器名称:

@Html.RenderAction("SecondNavigation", "YourControllerName").
@Html.RenderAction("SecondNavigation", "YourControllerName", new { Area = "MyAreaName" }).
如果使用的是区域,则还必须包括区域名称:

@Html.RenderAction("SecondNavigation", "YourControllerName").
@Html.RenderAction("SecondNavigation", "YourControllerName", new { Area = "MyAreaName" }).

请参见

RenderAction的第一个参数是操作名称,而不是路由名称。如果要呈现使用控制器生成的视图,而不是定义
部分导航
操作的视图,则还必须指定控制器名称:
@Html.RenderAction(“SecondNavigation”,“YourControllerName”)
。如果您使用的是区域,则还必须包含区域名称:
@Html.RenderAction(“SecondNavigation”,“YourControllerName”,new{area=“MyAreaName”})
@haim770我尝试指定控制器名称,但也遇到了相同的错误。正如你可以从我的帖子中看到的,路由和操作的名称是相同的,所以这个调用应该是有效的。我正在使用区域,但这两个控制器不在一个区域中,但我将尝试指定
area=”“
,然后看看会发生什么。@haim770添加区域修复了问题,如果您想将其作为答案,我会将其标记为该答案。我添加了答案。谢谢