ASP.Net aspx属性仍然存在

Mr *_*r W 1 asp.net

保存aspx页面的属性值的最佳做法是什么?

我做了以下,是否有一些更整洁的方式?

    public string DataTable
    {
        get
        {
            return _DataTable;
        }
        set
        {
            _DataTable = value;
            ViewState["DataTable"] = value;
        }
    }

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            DataTable = Request["dataTable"].ToString();
        }
        else
        {
            DataTable = ViewState["DataTable"].ToString();
        }
    }
Run Code Online (Sandbox Code Playgroud)

Rad*_*094 5

你有多个地方可以保存数据,每个地方都有自己的优点和缺点,并且拥有自己的生命周期:

ViewState - 在每个页面上单独存储为客户端上的隐藏(稍微加密)项.请记住,数据必须往返于客户端并返回每个回发,因此通常,存储大量数据并不是一个好的方法.

HiddenItem - 隐藏的输入控件.与ViewState的工作方式相同,但它不是enrypted,您可以使用客户端JS中的值

QueryString - 与hiddenitem相同,但严重的是,仅将其用于少量数据.我认为某些浏览器对URL长度有限制

会话 - 具有能够存储更大数据量的优点,因为它存储在服务器端而不是客户端.如果客户端使用浏览器上的后退/下一步按钮,您可能会遇到麻烦,并且您需要小心维护服务器场中的会话数据(即运行相同Web应用程序的多个服务器)

缓存 - 几乎与Session相同,但您可以从其他会话访问它.这更适合用于"全局"可访问数据(即每个人在你的app中使用的东西)

静态属性 - 与缓存的工作方式相同,但不能跨webfarms共享它,因此webfarm的每个成员在其加载的程序集中都有自己的静态值.