ASP.NET: Пользовательский элемент управления с предметной областью, это явно возможно, но мне нужны некоторые детали

Я видел два предложения для своего исходного вопроса о том, возможно ли определить предметную область в пользовательском элементе управления и существуют некоторые полезные предложения т.е.

Передача в содержании к пользовательскому элементу управления ASP.NET

и

Пользовательский элемент управления ASP.NET внутреннее содержание

Теперь, мне нравится теория последнего лучше, чем первый только по эстетическим причинам. Это, кажется, имеет больше смысла мне, но пример, данный использование два содержания переменных и templateContent, который отвечающая сторона не определила в их примере кода. Без этих деталей я нашел, что пример не работает. Я предполагаю, что они - свойства управления? Или некоторые такой?

РЕДАКТИРОВАНИЕ - ДЕТАЛИ: Что я пытаюсь сделать

У меня есть потребность пользовательского элемента управления ASP.NET, который скрывает некоторое содержание в панели в заполнителе и просит вход кода в видимой панели.

По существу пользователь поместит их код в обеспеченное текстовое поле в Панели A и отправит его, это будет проверено и, если это будет допустимо, то панель B и заблокированное содержание будут отображены.

Я сделал тест, где содержание было трудно кодировано в панель B, но как только я должен сделать содержание универсальным входом, это перестало работать. Если бы это был просто текст или somesuch затем, то я мог бы сделать это свойством управления, но как это - на самом деле, другой Пользовательский элемент управления, я испытываю некоторые затруднения при получении этого в "скрытую" панель.

Любые другие осуществимые решения также приветствуются.

ПРИМЕЧАНИЕ РЕДАКТИРОВАНИЯ: решение я пытаюсь реализовать это в 2,0, я действительно находил 3,5 решения, которые я не могу использовать.

Бывший пример кажется осуществимым, но я предпочел бы идти с последним, если кто-то мог бы восполнить пробелы для меня.

Спасибо.

10
задан Community 23 May 2017 в 12:26
поделиться

1 ответ

Хорошо, это тревожно просто, но многие учебники в Интернете, в которых рассказывается о подобных вещах, подталкивают к экстравагантным вещам, требующим элемента управления для синтаксического анализа ListItems или чего-то подобного.

Таким образом, это решение предназначено исключительно для того, чтобы вы могли создать элемент управления, который по какой-либо причине имеет заполнитель, внутри которого может быть что угодно (вроде области содержимого на главной странице). В этом случае это происходит потому, что панель, содержащая заполнитель, скрыта до тех пор, пока соответствующие действия ввода не будут выполнены на другой панели.

Во-первых, вам нужно добавить следующее:

[ParseChildren(true,"Content")]
[PersistChildren(false)]

чуть выше той части элемента управления, которая выглядит следующим образом:

public partial class MyControl : System.Web.UI.UserControl

затем в объявлениях с областью действия в заголовке элемента управления, который вы хотите объявить таким образом:

private Control _content;

[PersistenceMode(PersistenceMode.InnerProperty)]
public Control Content { get { return _content; } set { _content = value; } }

Наконец, вам нужно поместить контент в заполнитель следующим образом:

phContent.Controls.Add((Control)_content);

Эта последняя строка переходит в событие Page_Init. Для справки «phContent» - это имя заполнителя, в котором вы хотите разместить контент, например:

<asp:Panel ID="pnlLockable" runat="server" Visible="False">
<asp:Placeholder runat="server" ID="phContent" />
</asp:Panel>

В интерфейсе конечная реализация выглядит так:

<uc:MyControl runat="server" ID="lockit1">
<Content>
//...your stuff goes here...
</Content>
<uc:MyControl>

Обратите внимание, что я предполагаю, что то, что находится между Content Теги - это корневой элемент управления. Это потому, что я вложил туда еще один пользовательский элемент управления. Я полагаю, если вы поместите любой контент, который хотите, в панель или заполнитель, все будет в порядке.

24
ответ дан 3 December 2019 в 16:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: