如何在PostBack上持久化ASP.Net类?在最初加载页面时,我已经花时间访问数据库并用值填充对象,那么如何在PostBack上以优雅的方式保存该对象呢?包含自定义对象的页面将回发到自身。
值得一提的是,我在ASP.NET 3.5Web Forms应用程序中使用C#。
发布于 2010-04-15 23:13:24
在3.5中可能有一种更好的方法来实现这一点,但是在2.0中可以使用视图状态。只需将对象添加到视图状态中,它就会自动作为隐藏字段包含在默认的asp.net表单中。然后,在回发时,您可以从视图状态中检索它。
不过要小心,每次加载页面时都会包含视图状态。最终,我会建议从数据库中再次获取对象,并避免使用视图状态。您还可以尝试使用memcached之类的方法来缓存对象服务器端。
protected void Page_Load(object sender, EventArgs e)
{
if(ViewState["NameOfUser"] != null)
NameLabel.Text = ViewState["NameOfUser"].ToString();
else
NameLabel.Text = "Not set yet...";
}
protected void SubmitForm_Click(object sender, EventArgs e)
{
ViewState["NameOfUser"] = NameField.Text;
NameLabel.Text = NameField.Text;
}发布于 2010-04-15 23:14:16
您可以使用会话变量或服务器缓存。viewstate的一个限制是对象必须序列化才能存储,但会话和服务器缓存可以存储任何对象。
发布于 2010-04-22 08:17:31
如果对象很小,您可以考虑将其持久化到hidden field(s)。这样,您就不必占用服务器内存,但也可以避免再次访问数据库。
https://stackoverflow.com/questions/2646533
复制相似问题