C# @Action使用RouteAttributes在控制器中为ChildOnlyAction抛出InvalidOperationException
据我所知,子操作使用与父操作相同的路径执行,但我很难让它正常工作。我有一个MVC5应用程序,它包含几个方面。在一个区域中,我想在每个视图中显示一个部分,每个视图中都有一些与控制器模型分离的数据,因此我添加了一个子操作来完成此操作,但是当我尝试查看该区域中的任何页面时,我得到一个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
@{
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);
}