【发布时间】:2010-12-30 10:09:31
【问题描述】:
我学习 MVC 已经有一段时间了,我想我非常了解它的全部内容。但是有一件事我还不明白:我不断听到 MVC 没有视图状态或回发。
有人能简单解释一下这是什么意思吗?
【问题讨论】:
标签: asp.net asp.net-mvc postback viewstate
我学习 MVC 已经有一段时间了,我想我非常了解它的全部内容。但是有一件事我还不明白:我不断听到 MVC 没有视图状态或回发。
有人能简单解释一下这是什么意思吗?
【问题讨论】:
标签: asp.net asp.net-mvc postback viewstate
Try this SO answer which addresses the same question.
评论/问题后的额外信息:
ASP.Net Web 表单可以使用 viewstate 来存储页面上服务器控件的状态并管理服务器端事件的调用,例如按钮单击。这个想法是提出一种类似于 Win Forms 方法的编程模型,以使 Win Forms 开发人员更容易转换和淘汰基于浏览器的应用程序。要深入了解它,您应该访问谷歌并了解 asp.net 页面生命周期,它将解释整个过程并解释视图状态处理的位置。Here's a pretty good explanation。
ASP.Net MVC 是一种不同的编程模型,它使用不同的视图引擎来生成您的标记 - 即实际流回浏览器客户端的内容。在某种程度上,它消除了 Web 表单引入的许多“魔力”,但作为回报,您可以生成更标准的标记并更好地控制将呈现给客户端的内容。如果您正在学习 MVC,请查看 NerdDinner 示例章节,这是一个很好的教程以及 MVC 音乐商店。这些都是做 MVC 的很好的介绍。
MVC 不使用/不需要视图状态或回发,因为它是一种不同的编程模型。对于任何给定的项目,哪个更好/更合适是一个大辩论,我会让其他人也有,因为我认为两者都有自己的优势并且可以在不同的场景中有用(尽管我个人现在主要使用 MVC ......)。你是对的,事情的完成方式不同......你不能只使用 web 表单模仿的简单事件驱动方法,但是 MVC 有很多自己的优势,你会在无数博客文章中发现这些优势比较 webforms 与MVC。
【讨论】:
MVC 没有视图状态和会话,但您可以使用 TempData 对象代替视图状态。
在您的控制器中,您可以像 TempDate["MyKey"]="My Value" 这样绑定,在下一个请求中,您可以像 String s=TempData["MyKey"] 一样获得您的价值。
【讨论】: