我正在使用MVC3,并且有一个布局文件,这对我的所有视图都是通用的。在布局文件中,我想显示有关当前登录用户的一些信息。
我现在正在使用它,但我发现如何在动作方法中设置一些ViewBag字段,并在布局文件中选择它们的唯一方法。这意味着我将从我的所有操作方法中获取ViewBag字段,或者至少创建一个设置它们的方法,并从我的所有操作方法中调用此方法。
有没有中心方法来完成这项工作?最好的方法是在一个地方为布局文件做一次,但如果没有其他选项,每个控制器一个地方可能就足够了。
答案 0 :(得分:7)
正确的方法是在布局文件中调用Html.RenderAction()
,您需要特定于用户的详细信息。然后在某处创建一个合适的Action方法,该方法读取用户的帐户详细信息并将其作为视图(部分视图)或原始html(return Content("...")
)返回。
这样,您还可以利用缓存布局页面的功能,并保持用户的帐户详细信息区域不被缓存(因为它对每个用户来说显然都不同)。
设置ViewBag不是一个好主意,它不是强类型,它会破坏正确的MVC模式。