繁体   English   中英

ASP.NET将数据存储到容器类

[英]ASP.NET Storing data to container class

问题是,当我使用button_1从txt文件读取数据时,我将其放在了容器类中。 当我要在网站上使用button_2打印容器数据时-容器为空。 那么问题是如何将数据存储到容器类中?

容器:

 public class Matrix { public int[,] matrix; public Matrix() { matrix = new int[6, 6]; } public void AddNumber(int numb, int i, int j) { matrix[i, j] = numb; } } 

网络表格:

 public partial class Forma : System.Web.UI.Page { Matrix m = new Matrix(); protected void Page_Load(object sender, EventArgs e) { } protected void UploadButton_Click(object sender, EventArgs e) { } protected void Start_Button(object sender, EventArgs e) { char[] separators = {' ', '\\n', '\\r', '\\t'}; int numb = 0; int Counter = 0; if (!FileUpload1.HasFile) { Label1.Text = "Nepasirinkote failo!"; } else { Label1.Text = string.Empty; StreamReader reader = new StreamReader(FileUpload1.FileContent); string text = reader.ReadToEnd(); string[] allNumbers = text.Split(separators, StringSplitOptions.RemoveEmptyEntries); for (int i = 0; i < 6; i++) { for (int j = 0; j < 6; j++) { numb = int.Parse(allNumbers[Counter]); Counter++; m.AddNumber(numb, i, j); } } Label1.Text = m.matrix[0, 5].ToString(); } } protected void Button2_Click(object sender, EventArgs e) { Label1.Text = m.matrix[0, 5].ToString(); //Container infroamtion dissapears } } 

与SmartClient应用程序相反,Web应用程序为每个请求创建页面类的新实例。 所以代码

Matrix m = new Matrix();

每当您调用该页面或发生回发时都会调用。 因此,有一个矩阵的新实例,而第一个请求结束时,前一个实例就消失了。

有一些方法可以在请求之间存储数据,每种方法都有其起伏:

  • 您可以将数据存储在ViewState中。 请注意,ViewState会传输到客户端并发送回服务器,因此您只想使用少量数据即可完成此操作。
  • 您可以将数据存储在会话缓存中。 因为可以为每个用户分配内存,所以可以减少应用程序可以在每个服务器上处理的用户数量。 另外,如果您具有多服务器环境(Web服务器场),则需要确保每个服务器都可以访问会话缓存,因为新请求通常可以由其他服务器处理。
  • 与数据库数据一起使用的通用模式是重新读取新请求的数据。 通过上载获取文件时,可以在接收文件时将数据存储在数据库中并从数据库中重新读取。 您需要确保清除数据库中的数据,以防永久不需要。

链接概述了ASP.NET WebForms中可用的各种状态管理方法。 请注意,其中一些是特定于用户的,而其他则是所有用户共享的。

暂无
暂无

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

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