我在存储表单的原始值时遇到问题。
我有一个包含多个文本框的表单。所有这些文本框都与单个实体绑定。 对于例如
Class Car
{
private int Light;
private int TailLight;
private int Seats;
private int Gears;
}
现在一个文本框将与Light绑定,一个与TailLight绑定,依此类推。
在页面加载时,这些文本框中填充了一些值,用户可以选择编辑这些文本框并保存数据。在保存这些数据之前,我需要使用编辑的值检查OriginalValues(在页面加载上)。我无法找到将这些原始值存储在任何地方的方法。无论我在哪里保存原始值,数据都会在最后更改为编辑后的值,我明白这是因为我们正在提供参考。
任何人都可以建议解决这个问题的方法......
答案 0 :(得分:1)
当您使用MVVM时,答案非常简单:用户界面可以编辑的临时值驻留在视图模型中,原始值保留在模型中。当用户保存更改时,视图模型中的当前值将传输到模型中。
答案 1 :(得分:1)
即使经过不同方式的试验和错误,我也找不到办法做到这一点。
所以我使用DeepCopy做了同样的事情,即Seralizing和Deseralizing ..
// Deep clone
public static T DeepCopy<T>(this T a)
{
using (MemoryStream stream = new MemoryStream())
{
DataContractSerializer formatter = new DataContractSerializer(typeof(T));
formatter.WriteObject(stream, a);
stream.Position = 0;
return (T)formatter.ReadObject(stream);
}
}
希望这能帮到别人..