【发布时间】:2009-09-14 02:49:54
【问题描述】:
当您开发 Web 应用程序时,尤其是那些处理大量数据管理(例如联系人、地址、订单等)的 Web 应用程序时,您通常是否将界面创建为 就地编辑或者制作一个单独的“编辑”页面(和一个仅供查看的页面)?
为什么/一个比另一个有什么优势?我正在尝试对自己的具有此类数据管理的项目做出决定,但我不确定该走哪条路。
【问题讨论】:
标签: application-design inplace-editing
当您开发 Web 应用程序时,尤其是那些处理大量数据管理(例如联系人、地址、订单等)的 Web 应用程序时,您通常是否将界面创建为 就地编辑或者制作一个单独的“编辑”页面(和一个仅供查看的页面)?
为什么/一个比另一个有什么优势?我正在尝试对自己的具有此类数据管理的项目做出决定,但我不确定该走哪条路。
【问题讨论】:
标签: application-design inplace-editing
我认为当进行更改的“工作成本”相对较低时,内联编辑是有意义的。
例如,更改照片上的描述是一件很容易的事情,如果不完全正确,风险很小,并且用户希望根据他们正在编辑的图片的上下文正确地进行操作。在这种情况下,内联对我来说很有意义。
另一方面,在需要帮助或指导用户完成某个流程的应用程序中,或者更改意味着帐单/运输/帐户状态的重大更改。有一个单独的页面来帮助他们了解他们的行为的全部后果可能是有意义的。
【讨论】:
对于诸如查看页面的主要用途是编辑页面的设置,内联是有意义的。
在那之后,更多的是关于使用。如果人们不断地编辑它们,那么它应该是内联的。如果是为了说用户详细信息,它主要是阅读并且有时会更改,这就是我所做的:
查看页面时没有可编辑的框。 如果用户希望更改某些信息,他们点击编辑按钮 显示相同的页面,但具有可编辑字段和取消/提交按钮。
我通过让视图根据属性桶中的值决定要显示每个字段的哪个版本来实现这一点,该版本由操作 (MVC) 设置
编辑:
按要求提供样品(未经测试)
在控制器(城堡单轨列车)中,假设是 CustomerController:
public void View(int customerid)
{
PropertyBag["customer"] = Customer.Find(customerid);
}
public void Edit(int customerid)
{
PropertyBag["editing"] = true;
View(customerid);
RenderView("View");
}
在视图中(盲文):
<th>Name:</th>
<td>
<% if IsDefined("editing"): %>
<input name="c.Name" value="$customer.Name" />
<% else: %>
$customer.Name
<% end %>
</td>
【讨论】:
我想说,当编辑数据简单明了(防白痴)时,您应该使用就地编辑。对用户而言,它应该不会比在文字处理器中选择文本并在上面输入更复杂。
如果您需要/想要显示标签、说明、错误消息等,您可能应该使用专门的编辑页面。或者找到一种巧妙的方法在页面内执行此操作。
此外,有时您无法准确显示用户输入的内容。例如,您显示用户的年龄,但在编辑时显示生日。那么我建议您使用编辑页面,因为它可能让用户感到困惑。
【讨论】: