无论子视图是什么,我们都需要将动态数据传递到布局文件。例如,我们在布局的标题中显示一些用户特定的数据。
我们如何将这些数据传递到布局视图,而无需每个操作都独立提供它?我们应该使用自定义控制器,还是有更好的解决方案?
我使用的策略是拥有一个基本视图模型,我的所有视图模型都从中派生。我使用基本控制器,但您也可以使用全局过滤器并覆盖 OnActionExecuted。当我检测到返回 ViewResult 的操作时,我将模型转换为基本视图模型,并从基本控制器设置模型的公共属性。
全局滤波器和基本控制器之间的选择取决于多种因素。如果它确实适用于所有操作(返回视图结果)并且您不需要注入来访问某些资源,那么我可能会使用过滤器。如果您需要注入依赖项,或者您有一些将应用数据的控制器,而其他控制器则不会应用数据(例如管理控制器),那么我会选择基本控制器路线。如果您使用控制器,则需要记住从控制器派生。
如果您不想从通用视图模型派生,也可以对 ViewBag 执行相同的操作。我喜欢强类型模型,但是 YMMV。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)