【问题标题】:No viewstate or postback in ASP MVC?ASP MVC 中没有视图状态或回发?
【发布时间】:2010-12-30 10:09:31
【问题描述】:

我学习 MVC 已经有一段时间了,我想我非常了解它的全部内容。但是有一件事我还不明白:我不断听到 MVC 没有视图状态或回发。

有人能简单解释一下这是什么意思吗?

【问题讨论】:

    标签: asp.net asp.net-mvc postback viewstate


    【解决方案1】:

    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。

    【讨论】:

    • 感谢您的链接。我检查了它,但我仍然很困惑。似乎在该链接上发布的发布者已经知道视图状态是什么。我不明白 ASP.NET 如何需要视图状态而 ASP MVC 不需要。这是否意味着在 ASP MVC 中有些事情我不能做,或者只是做的不同?
    • 如果“viewstate”数据没有出现在 mvc 中,它将被保存在其他地方,我猜它是一个服务器。但是你必须为用户管理/记住每个“状态”,我假设你会在缓存中完成。那么你会为每个用户生成一个令牌吗?你能详细说明吗?
    • @Chris W 你能回答我的问题吗?
    • @RoyiNamir "viewstate" 不是你在 MVC 中使用的东西——它不需要保存在其他地方,它根本不存在。您可能会混淆 ViewState 和 Session 状态,因此我建议您阅读这两者以了解它们的不同之处。会话状态仍然可供您在 MVC 应用程序的服务器上使用 - 或者如果您希望使用您选择的键将条目绑定到特定用户,您可以使用其他类型的缓存,但最合适的选择将非常取决于您的应用程序的要求。
    • 不,我不会混淆他们:-)。我只是问如果没有登录,你会在哪里保存 UI 的状态更改。您必须以某种方式跟踪该用户....您会将其 ui 更改保存在哪里?会话?
    【解决方案2】:

    MVC 没有视图状态和会话,但您可以使用 TempData 对象代替视图状态。 在您的控制器中,您可以像 TempDate["MyKey"]="My Value" 这样绑定,在下一个请求中,您可以像 String s=TempData["MyKey"] 一样获得您的价值。

    【讨论】:

      猜你喜欢
      • 2011-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-26
      • 1970-01-01
      • 2013-03-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多