我只是想将WebForms转换为MVC:
在.net MVC中,哪些概念使ViewState成为不需要的东西?
如果表格在iteself上回发等(即回发)?page/usercontrol如何保持其状态?
人们在维持某种状态而不采用会话状态方面有什么技巧?
当然,完全无国籍的环境不存在?
但当然可以.事实上,网络是无国籍的.事实上,任何与此相反的想法都是异常.
Web控件在MVC中消失了.服务器端没有触发事件.这被两种不同的机制所取代 - URL和POSTing表单数据.正确使用这些将取代您对ViewState的需求.
在传统的ASP.NET Web应用程序中,您可以在您的网页上放置一个将执行函数X的LinkButton.ASP.NET会将大量的ViewState cruft,javascript和其他内容粘贴到网页中,以便在用户单击按钮时并且"回发"到网站(通过提交没有人知道存在的表单),ASP.NET重建发生的事情并确定必须执行特定的按钮事件处理程序.
在MVC中,您构建了访问特定路由的链接.该路线描述了用户希望做什么 - /Users/Delinquent/Index(显示所有拖欠用户的列表).MVC中的路由系统确定哪个Controller将处理此路由以及该控制器上的哪个方法将执行.可以通过URL查询字符串值将任何其他信息传输到控制器方法(对于第5页的延误,?Page = 5).
除了URL之外,您还可以使用HTML表单来回发更复杂的信息(例如表单的数据)或不适合查询字符串的内容,例如文件.
因此,您通过查询字符串"维护"状态并形成POST值.事实上,你会发现,最终没有那么多的状态可以维持.事实上,必须保持大量状态是一个很好的迹象,表明您的设计缺乏或者您正在尝试做一些不适合网站模型的事情.
一些相关问题:
维护Asp.net mvc中的viewstate?
ASP.NET MVC不适用于ViewState和Postback?
在大多数传统的Web语言中,有状态环境的概念实际上并不常见.ASP.NET Webforms是规则的一个例外,它通过重新制定许多标准来创建该异常.Webforms背后的目标主要是抽象HTML和Web开发的概念,以便桌面应用程序和Web应用程序之间的界限从开发的角度来看是模糊的.这通常意味着ASP.NET Webforms提供的解决方案虽然有效,却是一种万能的实现,它可以产生一些非常详细的输出,可以很好地满足大多数要求.相反,ASP.NET MVC的核心优势在于它将HTML输出控制权交还给开发人员,并允许他们创建强大架构的RESTful Web应用程序,这些应用程序在实现和呈现方面更好地定义和更清晰 - 尽管牺牲了某些级别的方便.
可以说,Webforms模型最大的缺点之一是ViewState,因为它会混淆输出,在某些情况下会显着增加页面大小,并且通常相当于使用手提钻挂画.您应该开始使用明确控制表单中字段的模式,并仅使用最相关的数据来优化输入和输出操作,而不是尝试在MVC应用程序中使用ViewState(或类似的任何东西).除了标记的更改之外,您还将学习如何构建设计更好的解决方案,这些解决方案可以在您的应用程序和外部公开.
我想做的第一个比较就是:Webforms构建Web页面,但MVC构建Web应用程序.如果您的日常工作主要是构建网站的一部分,或者添加一小部分功能,那么您通常会发现Webforms更容易,更省时; 另一方面,如果您想构建一个可测试,可扩展且灵活的完整应用程序,MVC就是您的呼唤.
viewstate只是一个庞大,丑陋的隐藏形式领域.
写出您自己的隐藏表单字段,并在必要时加密它们.
幸运的是,不再有任何简单的方法可以将大量数据转储到页面中,因此您必须明智地了解要保存的内容.