2010-07-19 64 views
2

我正在编写一个ASP.NET应用程序。我需要包含一个页面,用户可以在其中添加一个包含多组子项目的项目,每个子项目的数量都是无限的。子项本身包含10到15个字段,因此需要一定的UI空间。UI模式允许用户添加具有无限子项的项目

以我的意思为例,用户需要能够向系统添加业务记录,包括任意数量的员工记录和任意数量的资产记录。

我通常这样做的方法是在顶部使用带有一组选项卡的MultiView控件。这些选项卡在多视图的视图之间切换。第一个标签将用于商业记录,第二个将用于员工记录,第三个用于资产记录。员工和资产的视图最初是空的,添加新员工(或资产)的按钮。点击此按钮后,该页面将被回发,并且动态添加用户控件以捕获员工(或资产)的详细信息。

有一个保存按钮可将整个对象图保存到数据库中。

这对编程和维护来说非常复杂,我通常会遇到与管理ViewState以应对动态用户控制相关的问题。显然,页面上的ViewState也会变得很大,使得页面非常慢。

优点是它是一个非常直观的用户界面,用户可以理解,用户可以添加所有内容并在将所有内容保存到数据库之前进行检查。

您能否推荐您可能使用的任何其他UI模式以及任何优点或缺点?

感谢

大卫

回答

1

看一看木瓜,一UX模式库,可以帮助你解除一些启示:http://quince.infragistics.com/

关于ViewState的,如果你没有这样的状态MVC ,你有没有考虑以下技巧:

  • 禁用ViewState的非上下文元素(例如:标签)
  • 通过定义bzips> base64编码的自定义处理程序来压缩ViewState。您会惊讶于您最终在客户端保存的空间量
  • 将视图状态存储在服务器上,创建一个请求标识,并将此标识绑定到应用程序缓存,并带有expiry window =到会话寿命(非滑动),然后用你的guid来回替换viewstate。

干杯, 弗洛里安

+0

感谢您的ViewState提示。 – David 2010-07-19 09:14:27

0

我喜欢你的使用选项卡中的视图之间进行导航的多视角控制的设计。对我而言,我曾经有过很多观点,有时候我需要绕过一些步骤。您几乎处于向导控制的边缘,但我发现您的每个步骤都太复杂,无法使用官方向导控件。

就我而言,我将每个视图分隔成一个特定的网页。使用您的示例,请考虑创建三个页面:Business.aspx,Employee.aspx和Asset.aspx。如果您有验证Web表单的代码,则可以在每个网页中引用它。我这样做是因为在我的情况下,我在每个“步骤”中添加了很多记录。我不想担心在每个帖子后面必须正确重新创建视图状态的错误和空间。您的Business.aspx页面知道如何照顾自己,并且无需担心有效的员工记录或数据即可生效。当我遇到这个问题时,我的多视图模式可以很容易地将视图分解成单独的页面。噢,说有人直接浏览Asset.aspx,我会显示一条消息,解释用户跳过枪,或者制作一个简单的视图表单,以允许他们在添加资产之前选择相应的资源和/或员工。

+0

是的,将用户体验分解为多个保存是另一种选择。我的缺点是他们在决定是否保存之前没有机会查看整个事情。 – David 2010-09-23 09:55:08