views:

173

answers:

5

How to allow my control contains a text inside it's tags?

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

My control contains a complex table and I want to put Text into one of cells. How to do that?

A: 

Can you use a <literal> tag?

Myles
+2  A: 

Have a property on your user control called Text, and set that like

<uc:My id="my" Text="some text" runat="server">Text</uc:My>

or server side

my.Text = "some text"; 
BioBuckyBall
+1  A: 

Assuming the UC generates a table, the easiest method I can think of is this:

In the UserControl's ascx do something like this:

<table>
  <tr>
     ....
     <td><asp:Literal runat="server" ID="ltCellContent" /></td>
     .... 
  </tr>
</table>

In the UserControl's code behind:

public string CellContent 
{ 
  get { return ltCellContent.Text; } 
  set { ltCellContent.Text = value; } }
}

And to use it:

<uc:My runat="server" CellContent="Some content" />
pbz
Yea, this is the most easy way. But I want to understand how to implement the task properly. Like asp:Label does.
abatishchev
@abatishchev: In that case you need to look into how custom controls are built; I recommend "Developing Microsoft ASP.NET Server Controls and Components" by Nikhil/Datye, V. Kothari.
pbz
+2  A: 
[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;
        }
}
abatishchev