((List<string>)Session["answera"]).Add(xle.InnerText);
我需要执行此操作,但我得到“对象引用未设置为...的实例” 我不想用
List<string> ast = new List<string>();
ast.Add("asdas!");
Session["stringList"] = ast;
List<string> bst = (List<string>)Session["stringList"];
因为我只想向 Session-String-Array 添加一个字符串。
最佳答案
您是否考虑过包装您的 List<string>
在自定义上下文对象的属性中?我必须在应用程序上做类似的事情,所以我最终创建了对我来说是 UserContext
的东西。对象,它有一个 Current
属性,负责创建新对象并将它们存储在 session 中。这是基本代码,已调整以包含您的列表:
public class UserContext
{
private UserContext()
{
}
public static UserContext Current
{
get
{
if (HttpContext.Current.Session["UserContext"] == null)
{
var uc = new UserContext
{
StringList = new List<string>()
};
HttpContext.Current.Session["UserContext"] = uc;
}
return (UserContext) HttpContext.Current.Session["UserContext"];
}
}
public List<string> StringList { get; set; }
}
我实际上从 this SO question 得到了大部分代码和结构.
因为这个类是我的 Web
的一部分命名空间,我访问它就像访问 HttpContext.Current
对象,因此我永远不必显式转换任何内容。
关于c# - 如何处理 ((List<string>)Session.Add (""),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3483521/