首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >寻找在返回页面时保留页面字段值的模式

寻找在返回页面时保留页面字段值的模式
EN

Stack Overflow用户
提问于 2009-07-23 10:52:36
回答 3查看 96关注 0票数 0

例如,我有一个带有过滤器输入的列表页面,用户可以从该页面导航到捕获页面,在返回到列表页面之前,他们可能会在那里花费一些时间进行捕获。当他们返回到列表页面时,我希望再次自动应用他们之前的过滤器。

这不是一个火箭科学问题,所以我确信已经有了无数的解决方案,但我希望在这里得到一些答案,以启发我解决这个问题的常用模式。我的直接想法是为页面‘pre-set’创建一个会话对象,每个页面有一个字典。如果存储在比会话更长的地方,这也可以扩展到更长期的预设。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-07-23 20:35:43

我在一个实用程序类中有一些辅助函数,我在其中传递要保存或加载到会话中的控件。通常,我会在初始页面加载时调用load,并在用户执行搜索或我想保存的时候调用save函数。

我为要保存到会话中的每种控件创建了一个新的重载。这里有一个用于TextBox的。我不确定这是不是非常好的代码,但它似乎工作得相当好。

代码语言:javascript
复制
public void SaveToSession(TextBox control, HttpSessionState session, string SectionKey)
{
    session[SectionKey + control.ID] = control.Text;
}

public string LoadFromSession(TextBox control, HttpSessionState session, string SectionKey, string DefaultValue)
{
    string ReturnValue = "";
    if (session[SectionKey + control.ID] != null)
    {
        control.Text = session[SectionKey + control.ID].ToString();
        ReturnValue = session[SectionKey + control.ID].ToString();
    }
    else
    {
        control.Text = DefaultValue;
        ReturnValue = DefaultValue;
    }
    return ReturnValue;

}
票数 0
EN

Stack Overflow用户

发布于 2009-07-23 10:55:30

会话是存储这类信息的好地方。我看不出在这种情况下使用Session对你不起作用的原因。

票数 1
EN

Stack Overflow用户

发布于 2009-07-23 11:06:56

是的,您可以将每个页面的过滤器存储在字典对象中,该对象本身可以放入会话中,如下所示:

代码语言:javascript
复制
IDictionary<string,string> pageFilters;
if(Session["filters"]==null){
    pageFilters = new Dictionary<string,string>();
    Session["filters"]=pageFilters;
}else{
   pageFilters=(IDictionary)Session["filters"];
}

if(pageFilters.ContainsKey(CURRENT_PAGE_NAME OR KEY))
{
   pageFilters[CURRENT_PAGE_NAME OR KEY]=/*FILTER FOR PAGE*/;
}else{
   pageFilters[CURRENT_PAGE_NAME OR KEY]=/*FILTER FOR PAGE*/;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1170977

复制
相关文章

相似问题

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