Подтвердить что ты не робот

Что такое LiteralControl? Почему он используется?

Что такое 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, которые сгенерированы и перечислены до и после каждого элемента управления, который я добавил на мою страницу. Литеральные элементы управления также имеют только свойство текста.

Я все еще не уверен, почему LiteralControls нужны и используются? Почему используется LiteralControls? Почему элементы управления, которые я добавляю на мою страницу, имеют один элемент LiteralControl, размещенный до и после? И почему у них есть только текстовое свойство?

4b9b3361

Ответ 1

От MSDN Literal Control представляет элементы HTML, текст и любые другие строки на странице ASP.NET, которые не требуют обработки на сервера.

Также рассмотрите это для Использование Literal Control

A label отображает тег <span>. Это позволяет вам программно изменять отображать характеристики некоторого текста, который вы хотите отобразить. A LiteralControl визуализирует точно любой статический HTML, который вы хотите. Нет общего преимущество использования одного над другим. Один может быть более полезным, чем другой в определенных обстоятельствах. Например, если вы хотите отображать статический текст, и не вносите никаких программных изменений в это, вы можете использовать LiteralControl.

Ответ 2

A LiteralControl используется для ввода HTML на вашу страницу во время выполнения.

Ответ 3

Многие программисты, которые не понимают значения семантической разметки (особенно те, которые имеют в основном фон Windows Forms), будут использовать элемент управления Label или тег HTML LABEL в качестве заполнителя для программно сгенерированного текста на странице. Недостатком этого является то, что Label имеет смысловое значение в документе HTML.

Использование литерала дает вам элемент управления с атрибутом идентификатора для привязки к нему, позволяя вам вводить семантически правильную разметку вокруг него.

Кроме того, если вы не нажимаете какой-либо текст на тег LABEL, он все равно выдает тег в вашем HTML, например: <label></label>, тогда как в Literal без текста ничего не выводится - намного чище.

Ответ 4

Вы получите LiteralControl для любой разметки HTML, которая не является частью серверного элемента управления ASP.NET. Это именно то, как фреймворк создает кукурузу HTML вашей страницы. Свойством Text является только этот HTML-код, который также включает любые пробелы.

Ответ 5

То, что я сделал в одном веб-приложении, состояло в том, чтобы подключиться к определенным элементам literal на странице, чтобы добавить текст во время выполнения. Элемент управления literal не создает собственную разметку, но с радостью отобразит любой HTML-код, который вы предоставили для свойства Text, так же как и исходный текст.

Ответ 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 />"));
                }
            }
        }
    }
  }
}