基本上我有一个网页结构,页面的公共部分(标题,侧栏等)是在一个单独的控制器中生成的,该控制器充满了输出部分视图的子操作。然后我从网站的布局页面调用这些操作(使用RenderAction())。
所以(如果我正确地说这个),有多个内部mvc管道(标题/侧边栏内部请求),包括特定网页的原始请求管道。如何/在哪里可以初始化原始管道请求中的某些数据,并从其他内部mvc管道请求访问该数据?
我想要完成的总结(例如)
希望这是有道理的......
答案 0 :(得分:0)
您正在寻找的是儿童行动。您只需在某个控制器中创建一个返回局部视图的操作。例如,您可以通过以下方式处理网站导航:
[ChildActionOnly]
public ActionResult SiteNavigation()
{
// get the data for your nav
return PartialView("_SiteNavigation", yourSiteNavModel);
}
ChildActionOnly
属性确保此操作只能作为子操作调用,通过在浏览器的导航栏中键入URL使其无法访问。
然后,您在Views\Shared\_SiteNavigation.cshtml
中创建一个视图:
@model Namespace.To.ClassForSiteNavigation
<!-- render your site navigation using the model -->
最后,在你的布局中:
@Html.Action("SiteNavigation", "ControllerWhereThisExists")
答案 1 :(得分:-2)
我认为你可以使用Tempdata。 Tempdate在您访问后会被删除,因此如果您想再使用这些数据,请使用Tempdata.Peek或Tempdata.Keep。
这是一个链接,其中包含一些如何在asp.net mvc中传递数据的解释。
https://msdn.microsoft.com/en-us/library/dd394711%28v=vs.100%29.aspx
如果tempdata没有这样做,那么你可以使用缓存。