例如,
如果我在页面上有一个带有runat = server的文本框,该值将被发回服务器,以便我可以访问代码隐藏中的属性。
但是,在以下情况下,它仍然适用吗?
因为只是思考,这种机制本质上不是臃肿吗?
如果所有输入控件及其值都在每次单击按钮时回发(即使不需要输入控件),这是否会降低性能?
页面上只有一个表单标签真的限制我们使用这种机制吗?
答案 0 :(得分:3)
Truly Understanding ViewState是关于ASP.NET ViewState主题的必读文章
答案 1 :(得分:2)
有几个选项可以减少膨胀(是的,在处理大量控件时有很多选择):
此外,请查看Page Life Cycle in ASP.NET的精彩图形表示。
答案 2 :(得分:1)
除非您使用ajax,否则页面上的每个输入都将完全回发,因为单个表单标记。欢迎来到asp.net ...
答案 3 :(得分:1)
只要你在服务器端点击的方法是页面类的非静态成员,它就可以访问文本框和页面上的所有其他控件。
是的,所有呈现给浏览器的控件(无论是在MasterPage,用户控件等)都可以在回发时使用。
您可能需要查看Understanding ASP.NET View State。
这种体系结构确实存在性能问题,但是(取决于页面的复杂性)从服务器负载的角度来看,它通常不是问题,因为硬件升级通常比在优化应用程序性能上花费额外的编程时间更便宜。 p>
如上所述,(正如其他人所指出的那样)如果你想避免整个页面级回发到服务器,请考虑使用AJAX。
答案 4 :(得分:0)
是的,它全部贴回来了,是的,它可能导致臃肿。我敢肯定,如果你搜索ViewState,你会发现有很多人在讨论它以及如何最小化它:)
答案 5 :(得分:0)
是的,您的文本框在两种情况下都可用,是的,它是膨胀的。这就是AJAX发挥作用的地方。使用AJAX,您只需发送所需的数据。
如果要发送最小数量的数据,可以使用页面方法(页面上的静态方法修饰,以便脚本管理器构建javascript来调用它,或者您可以使用jquery或其他方法调用它)或脚本启用的Web服务也很好用。
您还拥有可以变得非常大的viewstate。 ASP.Net MVC是一种新的范例,而不是使用没有视图状态或回发的WebForms。它包含HTTP而不是隐藏它,为开发人员提供更多控制权。
答案 6 :(得分:0)
如上所述,文本框数据将被回发。除了使用Ajax之外,禁用视图状态会极大地影响页面的性能,即使那时对控件功能(控件状态)至关重要的属性中的数据仍会被回发。
答案 7 :(得分:0)
如果您没有对表单上的每个控件进行回发,您将无法在代码隐藏中访问它。即如果在你的按钮按下你想要修改文本控件的属性你不能这样做,因为ASP.Net对文本控件一无所知。
由于服务器和客户端之间的通信是无状态的,并且每次页面都是服务器时服务器都会忘记它的全部内容如果您想再次使用同一页面,则回发很重要。无论您使用何种编程语言,都存在这种或类似的机制来处理服务器端代码。
如果您希望最小化回发(视图状态大小),请执行此操作。
答案 8 :(得分:-1)
你几乎用香草ASP.NET击中头部 - 它不是很好!在您描述的两个实例中,答案都是肯定的 - 文本框将与表单一起发送。
整个postback / ViewState问题有点痛苦,任何有能力的ASP.NET开发人员学习的第一件事就是避免它们!