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

时间:2016-02-20 10:08:00

标签: c# asp.net

问题在于,当我使用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
    }
}

1 个答案:

答案 0 :(得分:1)

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

Matrix m = new Matrix();
每当您调用页面或发生回发时都会调用

。所以有一个新的矩阵实例,前一个矩阵在第一个请求结束时就消失了。

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

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

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