首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在ASP.NET 3.5Web Forms项目中持久化PostBack上的类?

问如何在ASP.NET 3.5Web Forms项目中持久化PostBack上的类?
EN

Stack Overflow用户
提问于 2010-04-15 23:12:01
回答 3查看 1.4K关注 0票数 1

如何在PostBack上持久化ASP.Net类?在最初加载页面时,我已经花时间访问数据库并用值填充对象,那么如何在PostBack上以优雅的方式保存该对象呢?包含自定义对象的页面将回发到自身。

值得一提的是,我在ASP.NET 3.5Web Forms应用程序中使用C#。

EN

回答 3

Stack Overflow用户

发布于 2010-04-15 23:13:24

在3.5中可能有一种更好的方法来实现这一点,但是在2.0中可以使用视图状态。只需将对象添加到视图状态中,它就会自动作为隐藏字段包含在默认的asp.net表单中。然后,在回发时,您可以从视图状态中检索它。

不过要小心,每次加载页面时都会包含视图状态。最终,我会建议从数据库中再次获取对象,并避免使用视图状态。您还可以尝试使用memcached之类的方法来缓存对象服务器端。

代码语言:javascript
复制
    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;
    }

来自http://asp.net-tutorials.com/state/viewstate/的示例

票数 2
EN

Stack Overflow用户

发布于 2010-04-15 23:14:16

您可以使用会话变量或服务器缓存。viewstate的一个限制是对象必须序列化才能存储,但会话和服务器缓存可以存储任何对象。

票数 0
EN

Stack Overflow用户

发布于 2010-04-22 08:17:31

如果对象很小,您可以考虑将其持久化到hidden field(s)。这样,您就不必占用服务器内存,但也可以避免再次访问数据库。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2646533

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档