UserControl中不允许使用文字内容

时间:2009-12-01 17:21:51

标签: c# .net asp.net user-controls

如何允许我的控件在其标签内包含文本?

<uc:My runat="server">Text</uc:My>

我的控件包含一个复杂的表格,我想将Text放入一个单元格中。怎么做?

4 个答案:

答案 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)
    {
    }
}