保存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)
你有多个地方可以保存数据,每个地方都有自己的优点和缺点,并且拥有自己的生命周期:
ViewState - 在每个页面上单独存储为客户端上的隐藏(稍微加密)项.请记住,数据必须往返于客户端并返回每个回发,因此通常,存储大量数据并不是一个好的方法.
HiddenItem - 隐藏的输入控件.与ViewState的工作方式相同,但它不是enrypted,您可以使用客户端JS中的值
QueryString - 与hiddenitem相同,但严重的是,仅将其用于少量数据.我认为某些浏览器对URL长度有限制
会话 - 具有能够存储更大数据量的优点,因为它存储在服务器端而不是客户端.如果客户端使用浏览器上的后退/下一步按钮,您可能会遇到麻烦,并且您需要小心维护服务器场中的会话数据(即运行相同Web应用程序的多个服务器)
缓存 - 几乎与Session相同,但您可以从其他会话访问它.这更适合用于"全局"可访问数据(即每个人在你的app中使用的东西)
静态属性 - 与缓存的工作方式相同,但不能跨webfarms共享它,因此webfarm的每个成员在其加载的程序集中都有自己的静态值.
| 归档时间: |
|
| 查看次数: |
1173 次 |
| 最近记录: |