【问题标题】:What is LiteralControl? Why is it used?什么是文字控制?为什么使用它?
【发布时间】:2017-10-05 03:23:02
【问题描述】:

什么是LiteralControl?我正在阅读有关 LiteralContols 的信息,但我不确定为什么要使用它们。 我使用此代码列出了页面中的控件,并且 - 我有一个包含标签和按钮的页面。当我使用这个

foreach (Control control in Page.Controls)
{
    Response.Write(control.GetType().ToString() + " - <b> " + control.ID + "</b><br />");    

    if (control is LiteralControl)
    {
        Response.Write("Textt :" + ((LiteralControl)control).Text.ToString() + " - " + 
            Server.HtmlEncode(((LiteralControl)control).Text + "<br />") ); 
    }
}

我发现实际上有LiteralControls 在我添加到页面的每个控件之前和之后生成并列出。文字控件也只有 text 属性。

我仍然不确定为什么需要和使用LiteralControls?为什么使用LiteralControls?为什么我添加到页面的控件前后都有一个 LiteralControl?为什么他们只有 Text 属性?

【问题讨论】:

标签: asp.net controls


【解决方案1】:

LiteralControl 用于在运行时将 HTML 注入您的页面。

【讨论】:

    【解决方案2】:

    来自MSDN Literal Control 表示 ASP.NET 页面中不需要在服务器上处理的 HTML 元素、文本和任何其他字符串。

    也可以看看Literal Control usage

    label 呈现 &lt;span&gt; 标记。它允许您以编程方式更改 显示要显示的某些文本的特征。一个LiteralControl 完全呈现您想要的任何静态 HTML。没有一般 使用其中一个的优势。一个可能比另一个更有用 在某些情况下。例如,如果要显示静态文本, 并且不对它进行任何编程更改,您可能需要使用 文字控制。

    【讨论】:

    【解决方案3】:

    许多不了解语义标记价值的程序员(尤其是那些主要具有 Windows 窗体背景的程序员)将使用 Label 控件或 HTML LABEL 标签作为页面上以编程方式生成的文本的占位符。这样做的缺点是 Label 在 HTML 文档中具有语义意义。

    使用文字为您提供了一个带有要挂钩的 ID 属性的控件,同时允许您在其周围注入语义正确的标记。

    此外,如果您最终没有将任何文本推送到 LABEL 标签,它仍会在您的 HTML 中输出标签,如下所示:&lt;label&gt;&lt;/label&gt;,而没有文本的 Literal 将不会输出任何内容 - 更简洁。

    【讨论】:

      【解决方案4】:

      对于不属于 ASP.NET 服务器控件的任何 HTML 标记,您将获得一个 LiteralControl。这就是框架呈现页面的 HTML 灌木丛的方式。 Text 属性就是这个 HTML,它还包括任何空格。

      【讨论】:

        【解决方案5】:

        我在一个 Web 应用程序中所做的是挂钩到页面上定义的 literal 控件以在运行时添加文本。 literal 控件不会创建自己的标记,但会愉快地呈现您提供给 Text 属性的任何 HTML 以及原始文本。

        【讨论】:

        • 你知道LiteralLiteralControl的区别吗?因为问题是关于LiteralControl
        【解决方案6】:

        试试这个:

        foreach (Control control in Page.Controls)
        {
            Response.Write(control.GetType().ToString() + " - <b> " + control.ID + "</b><br />");    
        
            if (control is LiteralControl)
            {
                Response.Write("Textt :" + ((LiteralControl)control).Text.ToString() + " - " + 
                Server.HtmlEncode(((LiteralControl)control).Text + "<br />") ); 
            }
        }
        

        【讨论】:

          【解决方案7】:
          using System;
          using System.Collections.Generic;
          using System.Linq;
          using System.Web;
          using System.Web.UI;
          using System.Web.UI.WebControls;
          
          public partial class _Default : System.Web.UI.Page
          {
            protected void Page_Load(object sender, EventArgs e)
            { }
            protected void btnGenerateControl_Click(object sender, EventArgs e)
            {
               // Retrieve the count of the controls to generate
              int Count = Convert.ToInt16(txtControlsCount.Text);
              // Loop thru each list item in the CheckBoxList
              foreach (ListItem li in chkBoxListControlType.Items)
              {
                  if (li.Selected)
                  {
                      // Generate Lable Controls
                      if (li.Value == "Label")
                      {
                          for (int i = 1; i <= Count; i++)
                          {
                              Label lbl = new Label();
                              lbl.Text = "Label - " + i.ToString() + "<br>";
                              //phLabels.Controls.Add(lbl);
                              //tdLabels.Controls.Add(lbl);
                              pnlLabels.Controls.Add(lbl);
                          }
                      }
                      // Generate TextBox controls
                      else if (li.Value == "TextBox")
                      {
                          for (int i = 1; i <= Count; i++)
                          {
                              TextBox txtBox = new TextBox();
                              txtBox.Text = "TextBox - " + i.ToString() ;                  
                              //phTextBoxes.Controls.Add(txtBox);
                              //tdTextBoxes.Controls.Add(txtBox);
          
                              pnlTextBoxes.Controls.Add(txtBox);
                               pnlTextBoxes.Controls.Add(new LiteralControl("<br />"));  
                              //pnlTextBoxes                
                          }
                      }
                      // Generate Button Controls
                      else
                      {
                          for (int i = 1; i <= Count; i++)
                          {
                              Button btn = new Button();
                              btn.Text = "Button - " + i.ToString();
                              //phButtons.Controls.Add(btn);
                              //tdButtons.Controls.Add(btn);
          
                              pnlButtons.Controls.Add(btn);
                              pnlButtons.Controls.Add(new LiteralControl("<br />"));
                          }
                      }
                  }
              }
            }
          }
          

          【讨论】:

          • 请不要只发布一堆代码而不解释它如何帮助回答用户的问题。 (您可以编辑您的帖子以添加说明。)
          猜你喜欢
          • 1970-01-01
          • 2011-04-24
          • 2011-10-31
          • 2015-09-01
          • 2010-11-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-09-17
          相关资源
          最近更新 更多