清洁解决方案:通过嵌入代码或代码隐藏填充<ul>?</ul>

时间:2011-11-09 20:25:31

标签: c# asp.net code-behind

假设我必须在不使用MVC的项目中使用来自Dictionary的数据填充无序列表。我确信ASP.Net爱好者会告诉我从代码隐藏中填充所有内容。 但是......我应该吗?

通过嵌入式代码:

<ul>
<% foreach (KeyValuePair<string, string> item in MyDictonary) { %>
    <li><%= item.Key %>: <strong><%= item.Value %></strong></li>
<% } %>
</ul>

我同意它不是很干净,但是当我从我的方法直接编写HTML标记时,替代方案会更糟糕:

public void writeMyDictionary() {
    StringBuilder sb = new StringBuilder();
    sb.Append("<ul>");

    foreach (KeyValuePair<string, string> item in MyDictonary) {
        sb.AppendFormat("<li>{0}: <strong>{1}</strong></li>", item.Key, item.Value);
    }

    sb.Append("</ul>");
    MyControl.Text = sb.ToString();
}

那么,为什么我要使用代码隐藏来填充我的所有控件?

3 个答案:

答案 0 :(得分:3)

对于这个用例,在后面的代码中执行它没有特别的价值。

我宁愿使用标记版本而不是后面的代码,因为你发布了它们,但我很可能只是在Repeater上使用数据绑定,因为这将是最干净的解决方案。

答案 1 :(得分:1)

您还可以考虑使用转发器控件http://msdn.microsoft.com/en-us/magazine/cc163780.aspx

答案 2 :(得分:0)

对于维护此问题的人来说,这不太令人惊讶(例如,如果他们想要更改标记)?

代码隐藏可能不是他们看的第一个地方。