C# 哪一个是更好的选择本地变量或将变量存储在网络控件的Viewstate中

C# 哪一个是更好的选择本地变量或将变量存储在网络控件的Viewstate中,c#,.net,asp.net,C#,.net,Asp.net,从最佳实践和性能角度来看,哪个选项更好?您需要什么 从创建ASPX页面并开始其生命周期的那一刻起,该变量就处于活动状态,一旦HTML呈现回客户端,该变量将与页面实例一起处理 或者是一个变量,它将“存活”回发,并与HTML一起发送回客户端,并在下次请求页面时返回到服务器 对于选项#1,您很好,应该在页面类中使用一个普通变量-不需要ViewState 如果您需要选项#2-变量值需要跨回发保存,并随下一个请求返回-那么只有ViewState作为选项-将其存储在页面类中的局部变量中是不行的 马克你需

从最佳实践和性能角度来看,哪个选项更好?

您需要什么

  • 从创建ASPX页面并开始其生命周期的那一刻起,该变量就处于活动状态,一旦HTML呈现回客户端,该变量将与页面实例一起处理

  • 或者是一个变量,它将“存活”回发,并与HTML一起发送回客户端,并在下次请求页面时返回到服务器

对于选项#1,您很好,应该在页面类中使用一个普通变量-不需要ViewState

如果您需要选项#2-变量值需要跨回发保存,并随下一个请求返回-那么只有ViewState作为选项-将其存储在页面类中的局部变量中是不行的

马克你需要什么

  • 从创建ASPX页面并开始其生命周期的那一刻起,该变量就处于活动状态,一旦HTML呈现回客户端,该变量将与页面实例一起处理

  • 或者是一个变量,它将“存活”回发,并与HTML一起发送回客户端,并在下次请求页面时返回到服务器

对于选项#1,您很好,应该在页面类中使用一个普通变量-不需要ViewState

如果您需要选项#2-变量值需要跨回发保存,并随下一个请求返回-那么只有ViewState作为选项-将其存储在页面类中的局部变量中是不行的


Marc

显然,局部变量是一个更好的选择。它们只在方法运行时存在,并且它们是在堆栈上创建的,因此它们非常便宜

ViewState被序列化并在响应中的一个隐藏字段中发送到浏览器,然后以请求中的表单数据的形式返回到服务器。如果您不需要持久化该值,那么这是完全不必要的


(如果确实需要持久化该值,则ViewState是这两个选项中的唯一选项。当然,从一个请求到下一个请求不会持久化局部变量。)

显然,局部变量是一个更好的选项。它们只在方法运行时存在,并且它们是在堆栈上创建的,因此它们非常便宜

ViewState被序列化并在响应中的一个隐藏字段中发送到浏览器,然后以请求中的表单数据的形式返回到服务器。如果您不需要持久化该值,那么这是完全不必要的


(如果确实需要持久化该值,则ViewState是这两个选项中的唯一选项。本地变量当然不会从一个请求持久化到下一个请求。)

如果需要持久化变量,另一个选项是让包含该变量的页面为您执行。在用户控件上创建一个事件,当需要填充变量时触发该事件,然后页面处理该事件。
通过这种方式,您可以充分利用这两个方面。

如果您需要持久化变量,另一个选择是让包含变量的页面为您执行。在用户控件上创建一个事件,当需要填充变量时触发该事件,然后页面处理该事件。
您可以通过这种方式充分利用这两个方面。

局部变量:在单个ASPX页面的生命周期内保持不变

:ASP.NET网页用于跨回发持久保存对Web窗体状态的更改的技术


因此,根据需要,您需要选择查看状态和局部变量。

局部变量:在单个ASPX页面的生命周期内保持不变

:ASP.NET网页用于跨回发持久保存对Web窗体状态的更改的技术


因此,根据需要,您需要选择视图状态和局部变量。

据我所知。。在网络控件或页面中使用变量没有区别吗?是吗?这是一样的,是的-无论变量是存在于page类本身,还是存在于web控件中,就我所能理解的而言,基本上都是一样的。。在网络控件或页面中使用变量没有区别吗?是吗?这是一样的,是的-变量是否存在于page类本身,或者在web控件中基本上是相同的