代码之家  ›  专栏  ›  技术社区  ›  nzduck

如何在没有a)数据绑定或b)使用响应的情况下创建HTML输出。写?

  •  -1
  • nzduck  · 技术社区  · 17 年前

    有点像我的 other question -我只勉强使用过带有runat=“server”和WebControls的HTMLControls,更喜欢控制生成的标记(包括元素的id等)。

    你有什么建议,比如,迭代集合的内容并生成表或列表,而不诉诸于数据绑定或使用Response。从后面的代码编写循环?我对创建干净、可维护代码的不同方法很感兴趣。

    5 回复  |  直到 9 年前
        1
  •  4
  •   Brownie    17 年前

    没有什么能阻止你直接在aspx页面中迭代你的集合。

     <ul>
         <% foreach(Person person in this.People) {%>
    
             <li><%=person.Firstname %> <%=person.Lastname %></li>
    
         <% } %>
     </ul>
    

    在这个例子中,People是我代码后面的一个列表属性。你会发现很多ASP。NET MVC项目正在使用这种方法。

        2
  •  1
  •   alex alex    17 年前

    当你说“数据绑定”时,你是在说通过某种方式将数据库结果集绑定到网格视图或中继器等。Bind()调用,或仅使用任何ASP。NET服务器控件(或HTML服务器控件)一般?

    因为,如果你只是想避免使用服务器控件,但不想使用响应。要么写,你的选择非常有限。

    就个人而言,如果你想控制标记,为什么不直接循环使用SqlDataReader或其他东西,然后在适用的情况下使用HTML将结果保存到Literal控件中呢。然后在页面内(无论您希望数据出现在哪里)只需执行以下操作:

     <asp:Literal ID="ltrResults" runat="server" />
    
        3
  •  0
  •   alex alex    17 年前

    @布朗尼。…是的,但这些是回应。写陈述。..你只是在使用速记格式

        4
  •  0
  •   nzduck    17 年前

    受第一个建议的启发,我还尝试在aspx中添加一个PlaceHolder,然后从代码后面以编程方式向其添加子控件。我希望我能为重复内容创建一个用户控件,然后将其添加到PlaceHolder的循环中。这将允许UI代码被很好地封装,并应隐藏所有StringBuilder操作。

        5
  •  0
  •   Ben Dempsey    17 年前

    中继器控制完全用于您想要的东西。它是一个服务器控件,但您可以指定在模板中生成什么HTML。你做了数据绑定,但这不只是手动循环的快捷方式吗?

    推荐文章