【问题标题】:How can I add a line break or html inside of a Panel?如何在面板内添加换行符或 html?
【发布时间】:2010-01-22 15:34:26
【问题描述】:

我正在尝试使用以下代码创建菜单。但我不知道如何让每个 LinkBut​​ton 出现在单独的行上。

MenuPanel.Controls.Clear();
foreach (FormList f in forms)
{
  if (f.IsActive == "y")
  {
     FormUserControl fc = (FormUserControl)LoadControl(f.StartControl);
     LinkButton lb = new LinkButton();
     lb.Text = fc.Title;
     MenuPanel.Controls.Add(lb);
     // I want some sort of line break here
  }
}

【问题讨论】:

    标签: c# asp.net .net function foreach


    【解决方案1】:

    使用LiteralControl 类插入换行符...

    MenuPanel.Controls.Add(new LiteralControl("<br />")); 
    

    或者使用 CSS 使您的链接成为块级元素...

    #menu a { display: block; }
    

    【讨论】:

    • 我不得不使用 LiteralControl,但基本上这效果很好。
    • 很好的答案,通常我用
      的文本创建大量的文字,因为它不能被重用。你的建议清理了我的代码。
    【解决方案2】:

    仅供参考:如果您已经在 aspx(design-view) 中添加了面板控件,并且如果您想在 .cs 文件(代码隐藏)中使用上述接受的答案,那么您将遇到类型错误。所以在那种情况下,你可以使用这种方式。请注意小盒“新”。

    Panel1.Controls.Add(new LiteralControl("<br>"));
    

    【讨论】:

      【解决方案3】:

      我知道这个答案已经被接受,但我想提出一个不同的选择。如果您想要一个垂直的元素列表,那么可能值得使用 ul 或 ol 元素。这意味着您不必使用可怕的 br 标签或任何技巧来获得您需要的东西。

      【讨论】:

        【解决方案4】:

        你可以这样做:

        HtmlGenericControl div = new HtmlGenericControl("div");
        div.Text = "&nbsp;";
        MenuPanel.Controls.Add(div);
        

        【讨论】:

          【解决方案5】:

          在面板控件中你可以使用具有“文本属性值”的标签控件

          Label lb1 = new Label();
          lb1.Text = "<br>";
          
          Panel1.Controls.Add(lb1);     
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2021-07-18
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-07-28
            • 1970-01-01
            相关资源
            最近更新 更多