Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Model view controller MVC中的会话_Model View Controller - Fatal编程技术网

Model view controller MVC中的会话

Model view controller MVC中的会话,model-view-controller,Model View Controller,会话处理在MVC的总体概念中的位置是什么?模型还是控制器?我更喜欢将它们保持在控制器级别,或者将它们隐藏在自定义操作筛选器或模型绑定中 会话状态实际上是一个web客户机概念,出于分层的考虑,我更喜欢将它们排除在模型之外。或者至少我会将其包装在自己的会话或上下文界面中。会话状态的目的是将用户会话的数据从一个HttpRequest保存到下一个HttpRequest。在某些情况下,这是一个比手动实现cookie或为会话信息创建数据存储并传递标识符更简单的解决方案。MVC的方法是使用TempData,它

会话处理在MVC的总体概念中的位置是什么?模型还是控制器?

我更喜欢将它们保持在控制器级别,或者将它们隐藏在自定义操作筛选器或模型绑定中


会话状态实际上是一个web客户机概念,出于分层的考虑,我更喜欢将它们排除在模型之外。或者至少我会将其包装在自己的会话或上下文界面中。

会话状态的目的是将用户会话的数据从一个HttpRequest保存到下一个HttpRequest。在某些情况下,这是一个比手动实现cookie或为会话信息创建数据存储并传递标识符更简单的解决方案。MVC的方法是使用
TempData
,它包装SessionState。这意味着,除非覆盖某些核心基础设施,否则可能不需要直接访问SessionState。我认为模型是一种更具隐喻性的数据表示。在模型中使用会话数据似乎不是完全正确的,因为模型可能表示一些业务逻辑,会话状态将不必要地复杂化。Mvc提供了许多机制,允许我们在不直接使用HttpContext的情况下维护状态。这些机制包含为
ControllerContext
ActionFilter
过滤上下文、
ExceptionContext
AuthorizationContext
ModelBindingContext
、路由数据
ViewContext
的属性。它们有助于将可能存储在会话状态集合中的一组不同的内容分离到逻辑上更为独立的分区中

TempData可从ControllerContext和ViewContext获得。这是会话状态功能的访问点。如果您想要控制这些数据的处理和写入,并且不确定在哪里,那么动作过滤器是一个非常好的注入点,因为它们将这种关注从主要面向业务的控制器动作中排除。本文探讨了ActionFilter的使用,它可以跨请求自动持久化模型状态:。我想这可能会有帮助。这个问题不是特别具体。。。如果我没有直接回答你的问题,请澄清