从设计和编码的角度来看哪个更好:直接在视图中访问会话数据或将它们加载到控制器中并使用viewbag将它们传递给视图?
答案 0 :(得分:1)
答案 1 :(得分:0)
如果您确实需要使用Session,则应该在服务器端获取该数据,然后使用View Model中的Strongly Typed属性将其传递给View,而不是使用ViewBag。
因此,假设您的视图模型中有一个类型为IENumerable<SelectListItem>
的属性,并且在您的视图中,您将使用强类型版本的Html.DropDownListFor帮助程序以这种方式绑定到模型:
@Html.DropDownListFor(x => x.ProductId, Model.Products)
答案 2 :(得分:0)
最好的办法是访问控制器中的会话。原因:
性能。您可以很好地控制如何访问Session对象。如果您只需要阅读会话的属性,那么请指定您需要对会话的只读访问权限,MVC不会阻止会话,您将获得更高的性能。
飘尔丽思。在纯MVC场景中,视图仅知道模型。因此,您在会话中关注的任何值都必须作为模型的一部分传递。