Получить доступ к свойству пользовательского элемента управления asp.net из кода behinde

Я создаю пользовательский элемент управления asp.net

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="control.ascx.cs" Inherits="test.control.control" %>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>

Я поместил его на страницу aspx и хочу использовать Text свойство пользовательского элемента управления, но пользовательский элемент управления не имеет свойства Text.

<uc1:control runat="server" id="control" />

1 ответ

Решение

Вам необходимо добавить свойство к вашему коду, которое представляет свойство text текстового поля.

Так что в control.ascx.cs

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

Тогда это будет работать

<uc1:control runat="server" id="control" Text="My Control" />

Просто для пояснения - пользовательские элементы управления не наследуют естественным образом свойства дочерних элементов управления, например, что бы вы ожидали, если бы элемент управления имел 2 элемента управления textbox? Таким образом, для каждого свойства, которое вы хотите предоставить своему пользовательскому элементу управления, вам нужно добавить свойство в код позади. Вы даже можете добавить свойства, которые не относятся к свойствам дочерних элементов управления, и сохранить значение в скрытом поле, состоянии элемента управления или даже в виде viewstate.

Другие вопросы по тегам