repeater或listview vs concatenated html

时间:2009-12-01 17:07:56

标签: asp.net html repeater

在转换使用拼接html的网页后花费了不可忽视的时间,例如

string output = "";
output +="<ul>";
foreach(MyClass item in MyItems)
{
  output += "<li>"+item.Name+" - "+item.SomeProperty.ToString()+"</li>";
}
output+="</ul>";

literalPlaceHolder.Text=output;

使用ListView控件,我刚刚发现原始开发人员返回并将页面返回转换为使用连接的html。我个人的感觉是列表视图和转发器可以提供更清晰,信息更丰富的标记,可以由对C#经验较少的人编辑,并且它们更快,使用更少的内存。至少页面应该使用StringBuilder而不是字符串。任何人都对此有充分的理由吗?我有一种感觉,当我提起这件事时会引起重大冲突。

2 个答案:

答案 0 :(得分:4)

我不同意上面的答案。

首先从技术角度来看。 在代码隐藏中使用串联字符串显然将View与您的逻辑混合在一起。如果我要浏览这个应用程序,我想知道输出html来自哪里,因为aspx(或ascx)将为空。

此外,如果你正在使用像Repeater这样的控件,并且他正在连接html代码并将其输出到页面,那么应用程序的不同区域之间将没有一致性,它将会当一个错误发生时,或者必须添加一个功能时,知道在哪里可以看到这个问题。

我建议你只要问他为什么喜欢连接Html。他有什么理由将你的代码切换回他的方式而不先问。

我也不同意团队合作的观点。 在团队中,沟通就是一切。没有沟通,你就会发誓要失败。 不要害怕沟通。当有问题时,你必须要问它,你必须弄清楚。无论你赢了还是赢了都不是重点。关键是要了解彼此和一起工作,而不是互相攻击

答案 1 :(得分:3)

首先,我认为对于其他开发人员来说,只是替换你的代码并不是很合作,没有讨论。如果你想在这个位置占上风,你肯定必须为你的位置做好准备。

我同意标准的ASP.Net控件对于经验不足的开发人员来说更容易处理,如果在您的情况下这是一个问题。

我不确定我是否同意你关于StringBuilder的信息,而StringBuilder经常是激烈争论的焦点here和其他地方。如果您的列表不够冗长,那么StringBuilder可能没有足够的理由。

经验丰富的开发人员可能会对此特定方法表示赞赏的一个方面是,可以轻松地逐步查看每个项目的填充方式。使用ListView并不容易 - 您必须添加一个事件来捕获正在添加的项目,然后在其中添加一个断点。

最后,我鼓励你仔细选择你的战斗。这个特定的例子不是主要的设计问题。如果您预见未来会有其他更大的意见分歧,您可能会决定从一个较小的问题开始,以便与您的开发人员建立解决这类冲突的方法。或者,您可以认为这不是一个足够大的协议来争取,并等待一些重要的事情(我怀疑你将不得不等待很长时间)。选择哪种方式取决于所涉及的个性。