【发布时间】:2013-07-25 21:11:05
【问题描述】:
我想知道是否有一种方法可以为 _layout.cshtml 文件指定模型,我看到很多帖子都有基本相同的问题,人们用“替代”解决方案回复,不是说不可能,也没有说明如何正是我们可以做到这一点
我一直在尝试迁移到 MVC 并经常发现自己有这样的问题,我找到了这个网站:http://blog.bitdiff.com/2012/05/sharing-common-view-model-data-in.html 这部分解决了我的问题,但即使他们没有将他们的 _layout.cshtml 与@model 绑定,据我所知,如果我想访问 SharedContext,我必须在每个视图上指定一个模型,如果我是,请更正错了
我想做的是在 _layout.cshtml 上声明一个“@model Namespace.MyModel”,这样它就可以自行检索其信息,而不必为从 LayoutModel 继承的每个视图实现一个模型
*我希望我很清楚,基本上,我想知道如何在 _layout.cshtml 上声明 @model 标记,以便它可以访问自己的模型
使用我之前链接的解决方案(即使它没有与我的问题相关联)我必须这样做: @(((BaseController)ViewContext.Controller).Context.Property) 来获取共享信息,如果我可以简单地声明(并使用)@model,我可以通过执行类似的操作来完成同样的事情:@Model。属性*
如您所见,我正在努力将我已经知道的一切从 webforms 迁移到 MVC,这对我来说非常困难,因为我必须采用与我习惯完全不同的某些做法
提前致谢
【问题讨论】:
-
为什么你的 _layout 需要一个模型?
-
好的,在 _layout 中有一个模型不是一个好主意,您可以使用 ViewBag - 查看这个答案stackoverflow.com/questions/6267727/…
-
_layout 是您所有视图使用的部分。在那里指定模型会限制您网站上的每个视图也具有该模型。
-
作为
ViewBag的替代方案,您还可以使用子操作。 -
@leandrokoiti - 您正在避免一种“不良做法”(ViewBag 的动态类型),但试图用另一种不良做法代替它(将您的布局与模型数据联系起来)。布局不应依赖数据...
标签: asp.net .net asp.net-mvc-3 asp.net-mvc-4