什么是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?为什么他们只有Text Property?
答案 0 :(得分:16)
LiteralControl用于在运行时将HTML注入页面。
答案 1 :(得分:14)
From MSDN Literal Control表示ASP.NET页面中的HTML元素,文本和任何其他字符串,不需要在服务器上进行处理。
label
呈现<span>
标记。它允许您以编程方式更改
显示要显示的某些文本的特征。一个LiteralControl
准确呈现您想要的任何静态HTML。没有一般性的
使用一个优于另一个的优势。一个可能比另一个更有用
在某些情况下。例如,如果要显示静态文本,
并且不对其进行编程更改,您可能希望使用a
LiteralControl。
答案 2 :(得分:5)
许多不了解语义标记价值的程序员(尤其是那些主要使用Windows窗体背景的程序员)将使用Label控件或HTML LABEL标记作为占位符,以便在页面上以编程方式生成文本。这样做的缺点是Label在HTML文档中具有语义含义。
使用文字为您提供一个具有要挂接的ID属性的控件,同时允许您在其周围注入语义正确的标记。
此外,如果您最终没有将任何文本推送到LABEL标记,它仍然会在HTML中输出标记,如下所示:<label></label>
,而没有文本的Literal将不输出任何内容 - 更清晰。
答案 3 :(得分:3)
对于任何不属于ASP.NET服务器控件的HTML标记,您将获得LiteralControl
。这就是框架如何呈现页面的HTML灌木丛。 Text
属性就是这个HTML,它还包含任何空格。
答案 4 :(得分:0)
我在一个Web应用程序中所做的是挂钩页面上定义的literal
控件以在运行时添加文本。 literal
控件不会创建自己的标记,但会很乐意呈现您提供给Text属性的任何HTML,以及原始文本。
答案 5 :(得分:0)
试试这个:
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 />") );
}
}
答案 6 :(得分:0)
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 />"));
}
}
}
}
}
}