Получить доступ к свойству пользовательского элемента управления 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.