我采用了一种技术,我将现有对象传递给表单,以便它们可以显示对象的内容,并允许用户在必要时更改它。表单没有绑定到对象,因此当需要采取行动时,表单会扫描其控件的内容并将其放入对象中。然后验证该对象并向用户报告任何问题。如果对象有效,则可以将其传递给调用者,以便调用者可以刷新视图/列表/等。
到目前为止,这么好。但是,如果表单的内容或缺少内容创建了无效对象而用户未对其进行更正,则可能取消该表单,表单可能会将无效对象交还给调用者。这不好。
基本上我正在寻找一种优雅而有效的方法,既可以让对象保持原样,也可以在用户取消表单/动作时回滚。
我考虑了一系列技巧,每项技巧都有很多优点和缺点。我很想考虑其他一些观点。
答案 0 :(得分:0)
我的方法一直是:
验证整个ViewModel。如果验证,则提交更改。如果它没有验证:
希望有所帮助
答案 1 :(得分:0)
你可以做例如
向您的对象添加IsValid()
方法,当表单关闭时,请检查包含有效对象
在表单中添加一些state
属性,该表单变为(例如boolean
)false
,当表单关闭时,您可以检查该表单的状态。
只是例子。
答案 2 :(得分:0)
在过去,我通过在将对象传递给表单时制作对象的浅表副本来解决这个问题。然后,当副本返回时,您将验证它。如果它签出,您只需用副本覆盖原始对象。
private static void PassTheObj()
{
MethodThatAcceptsObj(realObject.Copy());
}
private static void ValidateObj(customObject objCopy)
{
if (objCopy.IsValid()) realObject = objCopy;
}