繁体   English   中英

ASP.NET Web窗体中的数据持久性和更新

[英]Data persistence and updates in ASP.NET Web Forms

我目前正在使用C#和ASP.NET(3.5)开发Web应用程序/游戏。 但是,每当我单击Web表单上的按钮时,就会遇到主页中使用的变量被重置为null的问题。 我想知道是否有一种方法可以允许变量在整个应用程序的生命周期中持久存在,以及可以从何处/何时访问变量。

我目前遇到的另一个问题是,我似乎无法找到一种无需刷新页面即可更新控件属性(如文本或颜色)的方法。 有没有一种方法可以“静默地”更新这些属性,而不会强迫用户经历整个页面刷新周期?

谢谢

  1. 使用会话集合为特定用户持久化。 或者,使用静态变量在应用程序域的生存期内(对于所有站点用户,直到Web服务器重新启动或崩溃)保留其值。

  2. 要“无声地”更新页面部分,请将它们包装到UpdatePanels(Microsoft AJAX库中的东西)中,或使用JavaScript(您可以使用jQuery之类的JS库来简化它并为您处理跨浏览器兼容性)来操纵文档的结构在即时。

它实际上取决于变量的目的及其范围。

对于每个访问者不同的变量,您希望将这些变量放入session中

对于整个应用程序全局变量且每个访问者都相同的变量,则可以使用静态变量,也可以将它们作为应用程序设置放入web.config中

更改客户端上的文本/颜色,这听起来像您可能需要使用一些JavaScript。 JQuery是一个javascript库,使许多这类操作变得更加容易。

此外,要更新客户端对象而不回发到服务器,则需要使用javascript。 jQuery可能是您最好的选择。

您可能在页面级别(或应用程序级别)禁用了ViewState。

通常,ASP.NET将每个控件的状态存储在Viewstate对象的当前页面中,以在重新加载时保留其状态。 查看代码中的EnableViewState对象(前端),或深入研究web.config。

如果您还希望数据在页面级别持久保存,请使用Session对象并解决timeout属性,以找到适合您和您的用户的值。 SlidingExpirationg也可能有用。 如果要使用此解决方案,您可能还会问自己一些问题。 您的应用程序是使用一台单服务器还是可能部署到服务器场? 如果是这样,请考虑使用SQL会话状态而不是InProc,因为它将为存储不同服务器消耗的会话数据提供一个更加一致的“中心”位置。

关于在不刷新页面的情况下更新控件,您正在寻找一种叫做Ajax的东西。 微软已经发布了ASP.NET Ajax工具包,特别是asp:UpdatePanel,它使您可以“部分更新”页面的各个部分,而无需重新加载其他所有内容。

这是最简单,最直接的方法,无需太多工作即可更新控件属性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM