父母与父母儿童记录在同一页上的最佳做法?

时间:2014-11-25 20:15:02

标签: jquery asp.net-mvc asp.net-web-api odata

我创建了一个简单的"命令"有形式的表格"订购商品"在同一页面上 - 使用mvc / web api / odata ..

构建

只是想知道其他人如何处理父母与父母的关系儿童记录在同一页面上?

这就是目前的工作原理&我想知道是否有其他人有更好的想法?

  1. 当用户点击"添加新订单"按一下新的"订单"加上" Active = 0" (临时记录)&我显示新插入订单的编辑表单。
  2. 用户可以填写"订单"形式与添加"订购商品"订单。
  3. 一旦"订单"我第一次保存,然后通过设置" Active = 1"。
  4. 使订单生效

    通过这种方式我可以想到两个问题:

    1. 临时订单(未完成的订单)需要立即删除。然后。
    2. 如果用户编辑现有订单&添加,编辑或删除"订购商品"从订单中,这将立即修改订单,即使用户点击"取消"按钮&实际订单未保存。这里的问题是用户可能会认为通过点击取消它不会保存任何更改(包括"订单项"他们已经做出的更改 - 我希望这是有道理的!)。
    3. 这是我的意思演示(请注意:添加"订购商品"位尚未完成 - 但应足以大致了解我所谈论的内容): http://orders.mydevelopmentserver.com/myorders

1 个答案:

答案 0 :(得分:0)

  1. 您只能在视图中(在客户端)创建和修改现有订单。只需准备模型即可保存。如果没有问题并且用户单击“保存”,则会发送到api填充模型,并在服务器端更新现有条目或创建新条目。如果用户单击取消,只需清理视图模型,不要向服务器发送任何内容。

  2. 您可以在DB中使用临时条目。您的父实体应该有一个标志或状态,指示它是临时的并且阻止在列表中显示它,以及额外的字段来存储原始实体id或null(如果是新的)。在创建新实体或编辑现有实体时,您应该使用此时间状态创建新实体(或克隆,如果编辑现有)。做你的改变。如果用户单击“保存”,则对于新实体,只需将状态更改为非临时,对于现有克隆,使用原始实体ID返回。并删除它之后的时间。如果用户单击取消,则只删除时间实体。如果用户在编辑模式下关闭浏览器,您可以处理onclose事件以删除它的时间实体,或者在下一次编辑尝试时将其删除。