我有一个.Net Core 2.1网站,基本上我正在尝试访问子视图中可用的共享布局中的数据。我可以从ViewBag或视图中的View模型中获得所需的东西-有某种方式可以引用它吗?
如果没有任何想法,什么是在我的布局中获取数据的最佳方法?我看过诸如https://www.davepaquette.com/archive/2016/01/02/goodbye-child-actions-hello-view-components.aspx之类的ViewComponents,但是似乎仅仅抓住字符串或模型之类的东西就显得有些过头了。不幸的是,我不能使用会话数据来传递值。
非常感谢,很抱歉,这是一个菜鸟问题(我是.net核心!)。
答案 0 :(得分:0)
对于传递对象,您可以使用 ViewBag 或 ViewData 。两者都使用下面的ViewDataDictionary
以类似的方式工作,这意味着您可以互换使用它们。
要设置值:
ViewBag.HelloWorld = "Hello world!";
ViewData["HelloWorld"] = "Hello world!";
要使用视图中的值:
@ViewBag.HelloWorld
@ViewData["HelloWorld"]
ViewDataDictionary
可以在控制器和视图中填充和使用。
ViewBag 是从DynamicViewData
派生而来,不需要强制转换,但不允许您在其中设置空格。
ViewData 来自ViewDataDictionary
,并提供有用的字典属性和功能。键也可以包含空格。需要强制类型转换,或默认为ToString()
。
您还可以传递HTML块,在内部布局中可以呈现部分
@RenderSection("Header", required: false)
然后您可以在各个视图中插入该部分
@section Header {
<strong>I sit in the existing header!</strong>
}
答案 1 :(得分:0)
答案是肯定的-您可以在父级共享布局中使用子视图的ViewBag和ViewData对象。