我正在尝试在控制器操作中使用Route属性命名(例如:[Route(Name = "Abc123")]
),同样能够通过Html.RenderAction
调用它,但看起来这不支持路由名称。我假设这是因为路由名称仅保留给通过HTTP请求的路由,而不是直接调用,但对MVC来说有点新,所以我不知所措。
我完全使用MVC属性路由,否则我没有配置路由。似乎我必须定义路由名称,路由名称具有以匹配操作方法名称。但是,在这样做时,当我尝试命名多个Index
时,我会收到命名冲突。
我基本上试图支持多个局部视图,每个视图都有自己的控制器,在我的网站上充当插件/小部件。理想情况下,每个人都会有一个名为Index
的行动。
您是否有关于如何保持相同命名的建议?这允许我在不更改渲染名称的情况下调用Html.RenderAction("Index", [ControllerName], [Model])
。
答案 0 :(得分:2)
您可以将属性路由与Html.RenderAction一起使用,只需确保属性中的操作名称是实际名称:
[Route("Home/About")]
public ActionResult About()
{
ViewBag.Message = "Your application description page.";
return View();
}
在HTML中你可以拥有
@ {Html.RenderAction(" About"," home");}
它会正常工作。
答案 1 :(得分:0)
您应该可以使用属性路由执行您要执行的操作。如果您尝试渲染局部视图,则应使用RenderPartial而不是RenderAction。
你是在区域之间做这个吗?我相信有一些问题可以让它正常工作。
您能否发布示例Controller代码和RouteConfig?