如何允许我的控件在其标签内包含文本?
<uc:My runat="server">Text</uc:My>
我的控件包含一个复杂的表格,我想将Text放入一个单元格中。怎么做?
答案 0 :(得分:7)
[PersistChildren(false)]
[ParseChildren(true, "Text")]
public partial class RequiredFieldMarker : UserControl, ITextControl
{
[Category("Settings")]
[PersistenceMode(PersistenceMode.EncodedInnerDefaultProperty)]
public string Text
{
get
{
return lblName.Text;
}
set
{
lblName.Text = value;
}
}
}
答案 1 :(得分:2)
在您的用户控件上设置名为Text
的属性,并将其设置为
<uc:My id="my" Text="some text" runat="server">Text</uc:My>
或服务器端
my.Text = "some text";
答案 2 :(得分:1)
假设UC生成一个表,我能想到的最简单的方法是:
在UserControl的ascx中执行以下操作:
<table>
<tr>
....
<td><asp:Literal runat="server" ID="ltCellContent" /></td>
....
</tr>
</table>
在UserControl的代码背后:
public string CellContent
{
get { return ltCellContent.Text; }
set { ltCellContent.Text = value; } }
}
使用它:
<uc:My runat="server" CellContent="Some content" />
答案 3 :(得分:1)
只需在类之前添加一行([ParseChildren(true,“TestInnerText”)]),并添加名为“TestInnerText”的属性。创建您选择的任何控件,我创建了LiteralControl只是为了显示内部html视图。
“TestInnerText” - 只是我给出的临时名称,您可以使用您选择的任何属性名称。
在my.aspx.cs文件中进行以下更改
[ParseChildren(true, "TestInnerText")]
public partial class My : UserControl
{
public string TestInnerText
{
set
{
LiteralControl lc = new LiteralControl();
lc.Text = value;
this.Controls.Add(lc);
}
}
protected void Page_Load(object sender, EventArgs e)
{
}
}