ASP.NET MVC是无状态的吗?

Nat*_*Pet 8 c# asp.net-mvc

我听说MVC .NET是无状态的.这有什么意义,为什么MVC是无国籍的.

Gar*_*ger 8

State通过以下几种方式在ASP.NET(MVC和WebForms)中进行管理:

  • 会议
  • 饼干
  • 表格帖子
  • 应用
  • 请求参数
  • 高速缓存
  • 上下文

MVC消除了ViewState,这意味着每次回发页面时控件(文本框,复选框等)都会丢失它们的值.您需要手动或通过其他方式重新填充它们(例如,模型绑定).

MVC并不是真正的无状态,但它确实删除了一种在ASP.NET中持久化状态的最常用方法--ViewState.


jga*_*fin 7

MVC是无状态的,因为HTTP是.HTTP中没有任何内容指示会话何时开始或结束.

每个Web框架都尝试通过使用cookie或请求/响应功能(如查询字符串或FORM post)来克服此问题.

  • 你的意思是HTTP上的一切都是无状态的?WebForms也在HTTP上运行. (3认同)
  • @Henk WebForms使用viewstate和POST来维护状态. (2认同)
  • @HenkHolterman:是的.HTTP是无状态的.没有"会话".WebForms通过使用超时并通过请求/响应结构传输其信息来模拟会话.当用户关闭它的Web浏览器/"会话"时,您将永远不会收到HTTP通知. (2认同)

Hen*_*man 5

MVC不是(完全)无国籍的.没有Web框架.

我认为这是指MVC取消_VIEWSTATE字段的事实.

但请提供链接或更多信息.


Jas*_*ley 5

网络是无状态的,因此构建在http之上的任何东西都是无状态的.无状态我的意思是每个请求/响应都是一个原子单元,不知道任何先前的请求.

有一些带有http的机制允许你在Session和Application之类的请求之间保持某种形式的状态,但通常,这些应该尽可能少地使用.

Webforms试图通过引入ViewState和Postback来创建状态错觉.但这并没有改变网络无国籍的事实.