【发布时间】:2014-05-06 07:48:33
【问题描述】:
假设我有复杂的类
class Complex
{
public ClassA A { get; set;}
public ClassB B { get; set;}
public string prop1 { get; set;}
public string prop2 { get; set;}
}
现在我想将此对象存储在会话中。我可以用下面的语句来做。
var complexObj = new Complex {
// Initialize the proerties here.
}
Session["ComplexObj"] = complexObj;
现在,我不想在会话中存储 Class A 对象(因为我们不在任何地方管理此值。)。谁能告诉我如何在不更改现有课程的情况下做到这一点。
我们可以为该特定属性提供类似data annotations 的内容吗?
类似的东西
[NoSession]
public ClassA A { get; set;}
请帮帮我。
【问题讨论】:
-
在 MVC 中没有开箱即用的东西。但是,您可以对 Session 对象进行包装以达到预期的效果。它将创建一个相同类型的新对象,复制基础属性值并为标记有该属性的属性设置默认值。您需要复制初始对象,因为非原始值是通过引用传递的。
-
复制对象的一种简单方法是对其进行序列化和反序列化。
标签: .net asp.net-mvc asp.net-mvc-3 asp.net-mvc-4