C# _Viewstart与控制器动作

C# _Viewstart与控制器动作,c#,razor,asp.net-mvc-5,C#,Razor,Asp.net Mvc 5,因此,我目前认为使用_ViewStart.cshtml的默认方法是: 布局=~/Views/_SomeSideMenu.cshtml; 现在我的侧菜单有点复杂,所以它需要一个控制器。但是我不知道如何为ViewStart调用控制器操作并让它返回PartialPage 我目前的解决方法是在_SomeSideMenu.cshtml文件中使用@Html.Action并用我需要的东西填充TempData。 通常情况下,我希望将这些数据放在ViewBag或模型中,但这些数据不可用,因为Html.Actio

因此,我目前认为使用_ViewStart.cshtml的默认方法是: 布局=~/Views/_SomeSideMenu.cshtml;

现在我的侧菜单有点复杂,所以它需要一个控制器。但是我不知道如何为ViewStart调用控制器操作并让它返回PartialPage

我目前的解决方法是在_SomeSideMenu.cshtml文件中使用@Html.Action并用我需要的东西填充TempData。 通常情况下,我希望将这些数据放在ViewBag或模型中,但这些数据不可用,因为Html.Action不会返回_SomeSideMenu.cshtml


如何调用控制器操作以返回在_ViewStart页面中找到的PartialPage?

实际上,您不能在ViewStart文件中执行此操作。ViewStart是一个可以存储与所有视图相关的公共功能的文件。这些页面也可以嵌套,因此如果您有多个控制器,则每个控制器的视图都可以有自己的ViewStart页面

您应该将侧菜单添加到布局页面中。您可以添加一些条件,使此输出进入布局页面。对于示例jere,我们有一个动作过滤器,它将一个键添加到ViewBag中,我们使用这个键为侧菜单状态(如打开或关闭)设置一个状态,并在左侧或右侧设置位置

您还可以更改视图中的默认布局页面,只需执行ViewStart页面的操作,更改布局属性

Layout = "~/Views/Shared/CustomLayoutPage.cshtml";
_SomeSideMenu.cshtml听起来不像是一个布局,其中可能包括横幅、边栏、页脚和视图主体。它听起来更像是应该包含在布局中的局部视图或组件。