相关输入的设计模式

时间:2010-04-08 11:18:21

标签: design-patterns web-applications input

我的问题是一个设计问题:
假设我有一个带有4个下拉列表的数据输入网页,每个下拉列表取决于前一个,以及一堆文本框。

  • ddlCountry(DropDownList)
  • ddlState(DropDownList)
  • ddlCity(DropDownList)
  • ddlBoro(DropDownList)
  • txtAddress(TxtBox)
  • txtZipcode(TxtBox)

和一个表示数据行的对象,每个数据行都有一个值:

  • countrySeqid
  • stateSeqid
  • citySeqid
  • boroSeqid
  • 地址
  • 邮政编码

    当然,country,state,city和boro值将是某些查找表的主键值。

当用户选择编辑该记录时,我会从数据库加载它并将其加载到页面中。 我的问题是如何简化加载DropDownLists。

我有一些代码可以抓取对象,查看其值并一次性将它们移动到相应的输入控件。但在这种情况下,我将不得不加载带有可能值的ddlCountry,然后分配值,然后对其余的ddls执行相同的操作。

我想我正在寻找一个优雅的解决方案。 我正在使用asp.net,但我认为这与这个问题无关。我正在寻找更多的设计模式。

1 个答案:

答案 0 :(得分:0)

之前我设计过这样的屏幕,asp.net确实很难做到,但每次选择后都要回发,所以重要一点。

这不是服务水平合同的设计模式问题。该网站需要具有多快的响应能力?你有什么联系?用户是否确切地知道他们想要制作哪些下拉选项,或者他们会花一些时间浏览?表单是否需要适合移动设备?

这些是影响您设计的问题。让我解释一下。

你可以在这里做两件事。一如既往,您实际上可能会选择混合方法,但极端情况是:

  1. 每个选择都会触发回发。通过查询下一组选项的服务并使用填充的新选项重建页面来处理请求。显然,这不是特别快速或简化,但它是最可靠和跨平台的。
  2. 当页面加载时,它在javascript中包含一个结构,描述将填充下拉列表的所有选项。你最后只会有一个回发。显然这是非常快的,但不利于巨大的列表,不是非常便携,如果你在选择链中需要任何类型的高级逻辑会带来一些困难。
  3. 一个可能很好的中间可能是将javascript视为一种一级缓存,将服务器视为二级缓存。您已在页面上嵌入了最常选择的国家/州,但如果有未命中,则会触发ajax post-back以获取更多数据。当然,这对你来说还有很多工作要做。

    所以是的。希望有所帮助