【问题标题】:Creating an unordered list with asp.net controls?使用 asp.net 控件创建无序列表?
【发布时间】:2011-03-17 16:04:02
【问题描述】:

我有这个网络控件,我一直在动态添加控件,但现在需要在控件周围添加一个有序列表。

为了呈现控件,我将控件添加到 ControlsCollection

    protected void Page_Load(object sender, EventArgs e)
    {
        var document = XDocument.Load(@"http://localhost:49179/XML/Templatek.xml");
        var builder = ObjectFactory.GetInstance<IControlBuilder>();
        var controls =builder.BuildControls(document);
        controls.ToList().ForEach(c => Controls.Add(c));

    }

这是我要构建的 html+aspnet ctrls:

 <fieldset>
    <ol>
      <li>
        <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
      </li>
      <li>
          <asp:TextBox runat="server" ID="TextBox1"></asp:TextBox>
      </li>
    </ol>
    </fieldset>

如何在列表项中定位控件? 我需要以不同的方式解决问题吗?

【问题讨论】:

    标签: asp.net html webforms


    【解决方案1】:

    改变这一行:

    controls.ToList().ForEach(c => Controls.Add(c)); 
    

    到这些行:

    Control ol = new HtmlGenericControl("ol");
    controls.ToList().ForEach(c => ol.Controls.Add(new HtmlGenericControl("li").Controls.Add(c)));
    Controls.Add(ol);
    

    编辑:

        Control ol = new HtmlGenericControl("ol");
        controls.ToList().ForEach(c =>
                                      {
                                          var li = new HtmlGenericControl("li");
                                          li.Controls.Add(c);
                                          ol.Controls.Add(li);
                                      });
        Controls.Add(ol);
    

    【讨论】:

    • 这段代码对我来说没有意义;我认为Controls.Add 返回void,那么如何将其结果用作参数?
    • 我没有尝试使用 Controls.Add 的任何结果
    • 在我看来你就是;您正在尝试使用Controls.Add 的结果作为ol.Controls.Add 的参数。您的代码无法为我编译。
    • C# (4) 编译器和我都将您的代码解释为您使用Add 的结果作为ol.Controls.Add 的参数。
    • 嗯。我有 99% 的把握这是一次建成的。我希望使用 new 运算符的结果,而不是 Add() 的结果。
    【解决方案2】:

    【讨论】:

    • 使用这个类绝对是要走的路。它不仅可以生成清晰可读的过程代码,还可以让您免于查看疯狂的 lambda 表达式来完成如此简单的任务。
    • @afuzzyllama 您不必使用任何 lambda。如果您愿意,只需使用常规的 foreach 即可。 lambda 语法所做的所有事情就是让您免于编写带有一堆一次性使用变量的代码。
    猜你喜欢
    • 2018-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-22
    • 2010-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多