C# @Action使用RouteAttributes在控制器中为ChildOnlyAction抛出InvalidOperationException

C# @Action使用RouteAttributes在控制器中为ChildOnlyAction抛出InvalidOperationException,c#,routes,asp.net-mvc-routing,asp.net-mvc-5,C#,Routes,Asp.net Mvc Routing,Asp.net Mvc 5,据我所知,子操作使用与父操作相同的路径执行,但我很难让它正常工作。我有一个MVC5应用程序,它包含几个方面。在一个区域中,我想在每个视图中显示一个部分,每个视图中都有一些与控制器模型分离的数据,因此我添加了一个子操作来完成此操作,但是当我尝试查看该区域中的任何页面时,我得到一个InvalidOperationException告诉我这一点 路由表中没有与提供的值匹配的路由 区域控制器如下所示(为简洁起见进行了简化): 该区域的布局: @{ Layout = "~/Views/Shared

据我所知,子操作使用与父操作相同的路径执行,但我很难让它正常工作。我有一个MVC5应用程序,它包含几个方面。在一个区域中,我想在每个视图中显示一个部分,每个视图中都有一些与控制器模型分离的数据,因此我添加了一个子操作来完成此操作,但是当我尝试查看该区域中的任何页面时,我得到一个InvalidOperationException告诉我这一点

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

区域控制器如下所示(为简洁起见进行了简化):

该区域的布局:

@{
    Layout = "~/Views/Shared/_Layout.cshtml";
}
@Scripts.Render("~/bundles/pages")
<body>

    <div id="content">
        <br />
        @Html.Partial("~/Areas/Page/Views/Shared/Search.cshtml")
        @RenderBody()

        @Html.Action("DataView", "Page")
    </div>
</body>
我尝试捕获未处理的路由异常,如中所示,但无效


如果您有任何建议,我们将不胜感激。谢谢你,Kiran在上面的评论中提供的答案是,简单地用该动作的路由值装饰子动作。谢谢你,基兰

我花了大量的时间来研究这个问题,当我在做的时候,我感到很沮丧,因为这样一个简单的解决方案。路由现在与子操作一起工作,如下所示:

    [ChildActionOnly]
    [Route("DataView")]
    public PartialViewResult DataView()
    {
        var model = new DataViewModel(repository);
        return PartialView("DataView", model);
    }

您能否尝试通过在子操作上修饰
[Route(“DataView”)]
来确定它是否为您解决了问题?
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapMvcAttributeRoutes();

        AreaRegistration.RegisterAllAreas();

        routes.MapRoute("Default",
            "{controller}/{action}/{id}",
            new {controller = "Home", action = "Index", id = UrlParameter.Optional}
            );
    }
    [ChildActionOnly]
    [Route("DataView")]
    public PartialViewResult DataView()
    {
        var model = new DataViewModel(repository);
        return PartialView("DataView", model);
    }