Repeater与String Builder

时间:2011-01-04 13:15:10

标签: c# asp.net sql webforms

我认为这个问题可能看起来有点奇怪,但这里有细节。

目标:由于各种原因检索一组对(文本,值)。其中一个示例是检索字母表,每个字母将用作锚点或LinkBut​​ton,文本值将是字母,click事件将获取对的值部分并将其放在stringFormat()中形成“参数化网址”

我为此目标使用了两种方法,但我不知道哪种更好!

1。使用中继器

一个转发器,它的ItemTemplate中有一个LinkBut​​ton,通过这个块,将文本设置为'text',并使用eval和'value'来创建QueryString。

2。使用StringBuilder

创建StringBuilder的实例 使用一个计数器等于要检索的总对的循环。并附加一个字符串格式,它将构建一个长字符串,其中包含使用某些代码导航所需的所有锚点

Links_strngBuilder.Append(string.Format("<a href='/data.aspx?page={0}'>{0}</a>", chrctr))

最后将String Builder实例转换为字符串并将其分配给标签

注意:chrctr文本和值字段将按照您的建议[在数据库的每个循环中]或[在数组/ arrayList / List&lt;&gt;中加载]进行检索存储值并将所有这些连接保存到db]

3 个答案:

答案 0 :(得分:1)

在我工作的地方,我们永远不会使用设计师的字符串构建。如果他不得不做一个简单的改变,我们不希望设计师在代码隐藏中。所以在代码隐藏的视图和代码隐藏中保留标记。

修改

中继器的其他优点是循环的变化更容易。无需重新编译并重新调整UI,只需编辑ASPX模板,保存并刷新。

答案 1 :(得分:1)

我不知道这两种方法如何相互比较(在内存使用和速度方面),但我肯定会选择Repeater,因为:

  • 代码更容易理解&amp;的支持
  • 使用StringBuilder让我想起了当广泛使用Response.Write时经典ASP的日子。
  • 您不能将可视化设计器的任何好处与StringBuilder一起使用。

- 帕维尔

答案 2 :(得分:0)

我认为构建输出更适合客户端(例如,当你进行ajax调用并希望以html显示结果时),而不是服务器端,除非你构建自定义服务器控件。

此外,如果您使用转发器,则只要需要更改,您就拥有了可扩展性选项,并且您拥有更多控制和设施(例如事件处理和使用css进行样式设置等)。