Литеральное содержимое не допускается в UserControl - PullRequest
7 голосов
/ 01 декабря 2009

Как разрешить моему элементу управления содержать текст внутри тегов?

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

Мой элемент управления содержит сложную таблицу, и я хочу поместить текст в одну из ячеек. Как это сделать?

Ответы [ 4 ]

7 голосов
/ 20 февраля 2010
[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;
        }
    }
}
2 голосов
/ 01 декабря 2009

Имейте свойство на вашем пользовательском элементе управления, называемое Text, и установите его как

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

или на стороне сервера

my.Text = "some text"; 
1 голос
/ 27 мая 2015

Просто добавьте одну строку перед классом ([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)
    {
    }
}
1 голос
/ 01 декабря 2009

Предполагая, что UC генерирует таблицу, самый простой метод, о котором я могу подумать, это:

В ascx UserControl сделать что-то вроде этого:

<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" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...