Действительно, вы можете, на самом деле есть много способов, но я покажу «Я использую .Net User Control позади моего макроса» . Я собираюсь сделать несколько предположений, чтобы продемонстрировать, как это сделать, поскольку они не изложены в вашем вопросе.
Предположения
Name (Alias) [Type]
Product (product) [Document Type]
- Product Details (productDetails) [Property]
- Product Template (productTemplate) [Default Template]
Event (event) [Document Type]
- Event Details (eventDetails) [Property]
- Event Template (eventTemplate) [Default Template]
Как сделать
Что собиралось сделать, это создать свойство .Net в пользовательском элементе управления, а затем позволить шаблону решить, какое имя свойства Umbraco искать. Этот способ означает, что вам не нужно зависеть от нескольких операторов if.
1. Запишите свой пользовательский элемент управления (в Visual Studio) и убедитесь, что у вас есть свойство, определенное в коде, как показано ниже
private string _detailsProperty;
public string DetailsProperty
{
set { this._detailsProperty = value; }
}
2. Загрузите свой пользовательский элемент управления в папку /usercontrols/
в корневом веб-каталоге, а свою DLL (если она скомпилирована) в папку /bin/
.
3. Создайте макрос (в Umbraco) и назначьте его вашему пользовательскому элементу управления. Давайте назовем макрос MyAbstractControl
, а затем назначим ему .Net User Control из выпадающего списка. Затем нажмите Сохранить (Важно!).
4. Если вы нажали «Сохранить» на шаге выше, должна появиться кнопка «Обзор свойств». Нажмите на это, и вы увидите свою собственность из пользовательского контроля. Убедитесь, что флажок установлен, а затем нажмите кнопку Сохранить свойства. Чтобы проверить, выполнено ли это, перезагрузите макрос и перейдите на вкладку «Свойства» и увидите добавленное в список свойство вашего пользовательского элемента управления.
5. Добавьте что-то вроде следующего кода в ваши шаблоны, чтобы искать разные псевдонимы свойств Umbraco.
<!-- put in template : productTemplate -->
<umbraco:Macro Alias="MyAbstractControl" DetailsProperty="productDetails" runat="server">
<!-- put in template : eventTemplate -->
<umbraco:Macro Alias="MyAbstractControl" DetailsProperty="eventDetails" runat="server">
6. Затем вы можете сделать небольшое обновление кода в вашем вопросе, например, следующим образом, чтобы он вел себя как нужно
if (!String.IsNullOrEmpty(this._detailsProperty))
{
Node currentNode = Node.GetCurrent();
string myValue = currentNode.GetProperty(this._detailsProperty).Value;
lblProductDetails.Text = myValue;
}
Надеюсь, это поможет.