我有一个带有表单的视图,该表单显示ViewModel中ObservableCollection
内对象的数据。 ObservableCollection
让我翻阅数据。
ObservableCollection
中的对象属于ItemTypeViewModel
类型。这是一个包装实体ItemType
的包装类。 ItemType
本身来自Linq2SQL(没有域类,应用程序的基础已经构建)。)
现在,我需要能够创建新的ItemTypes。我想使用表单来做到这一点。我有一个New
按钮,它将启动View的ViewModel中的命令,该命令将它委托给同一ViewModel中的方法(可能类似于CreateNewItemType()
。此方法需要创建一个新的ItemType
,但这就是我的困境所在。我看到的大多数例子都使用Domain类来创建一个新实例,例如
Customer customer = Customer.CreateNewCustomer();
但由于我没有任何域类,我不能这样做。把它放在View的ViewModel中,并将它放在包裹ItemType
的ViewModel中会感觉很奇怪
实体。
在这里采取什么好方法?
答案 0 :(得分:0)
我可能会离开这里,但听起来你有一个控制器正在提供ObservableCollection<ItemType>
。
在同一页面(或类似页面)上,您也希望能够通过表单元素接受用户输入,并将这些元素统一用于填充ItemType
的新实例。
如果是这种情况,表单的后期操作应该提交给控制器,并且控制器应该能够作为传入参数访问作为其适当数据类型的单个表单元素,或者如果您使用强大的 - 通过更改控制器方法的签名以接受ItemType
类型的参数,您应该能够隐式地将所有表单参数直接强制转换回ItemType
的实例。
当然,假设您在Asp.Net MVC框架内工作,这就是全部吗?
答案 1 :(得分:0)
我尝试回复,但我不确定是不是这样: 我将在viewmodel中替换自己的集合更改事件。当用户添加新项目或删除一项时,我将在两个单独的集合中收集添加/删除。然后,在提交阶段,我将从新项集合中的数据创建新的ItemType实例,并将这些记录提交给DB,以及执行删除。如果您需要检查修改到单行...
,最糟糕的是