Что такое 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, размещенный до и после? И почему у них есть только текстовое свойство?
Ответы
Ответ 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 />"));
}
}
}
}
}
}