Literal content is not allowed within a UserControl

前端 未结 4 1498
有刺的猬
有刺的猬 2021-01-18 02:38

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

Text

My control contains a complex t

相关标签:
4条回答
  • 2021-01-18 03:12

    Just add one line before the class ([ParseChildren(true, "TestInnerText")]), and add a property named "TestInnerText". Create any control of your choice, I have created LiteralControl just to display inner html view.

    "TestInnerText" - is just a temporary name I gave, you can use any property name of your choice.

    Do the following change in my.aspx.cs file,

    [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)
        {
        }
    }
    
    0 讨论(0)
  • 2021-01-18 03:13

    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"; 
    
    0 讨论(0)
  • 2021-01-18 03:17

    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" />
    
    0 讨论(0)
  • 2021-01-18 03:27
    [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;
            }
        }
    }
    
    0 讨论(0)
提交回复
热议问题