DotNetNuke DDRMenu устанавливает NodeSelector в коде позади
Я использую DDRMenu в DotNetNuke, чтобы выбрать узел меню из структуры моего сайта и отображать только подузел в определенной навигации в моем шаблоне.
<%@ Register TagPrefix="dnn" TagName="MENU" Src="~/DesktopModules/DDRMenu/Menu.ascx" %>
<dnn:MENU ID="MenuFooter" MenuStyle="MenuFooter" IncludeHidden="true" NodeSelector="FooterNavigation,0,1" runat="server" ></dnn:MENU>
Теперь я хочу иметь возможность установить атрибут NodeSelector в коде файла, потому что я хочу иметь возможность динамически устанавливать значение на Page_Load
// load footer navigation node from a config file
protected void Page_Load(object sender, EventArgs e)
{
var footerNode = Config.Instance.Navigation.FooterNode;
MenuFooter.NodeSelector = footerNode + ",0,1";
}
Но это не работает, так как в System.Web.UI.UserControl отсутствует атрибут NodeSelector.
Ошибка "System.Web.UI.UserControl" не содержит определения для "NodeSelector", и не найдено никакого метода расширения "NodeSelector", принимающего первый аргумент типа "System.Web.UI.UserControl" (если вы пропустили использование директива или ссылка на сборку?) C:\Projects\eWolf2012\dev\DNN\Portals_default\Skins\JWEwolfSkin2012\Simple.ascx.cs 141 24 JWEwolfSkin2012
Есть ли способ добиться этого?
С уважением
1 ответ
Обычно Menu.ascx в DDRMenu наследуется от DDRMenu SkinObject
:
<%@ Control Language="C#" AutoEventWireup="false" EnableViewState="false" Inherits="DotNetNuke.Web.DDRMenu.SkinObject" %>
Поскольку вы говорите об изменении кода позади, я предполагаю, что вы используете пользовательский элемент управления, который встраивает Menu.ascx. В этом случае вы должны иметь доступ к NodeSelector
свойство, так как оно существует в SkinObject
учебный класс.
Я подозреваю, что происходит то, что ваш тип элемента управления неправильно загружен дизайнером, и что он возвращается к UserControl
тип, который не имеет NodeSelector
имущество.
Попробуйте следующее:
- Включите сборку DDRMenu в ваш текущий проект (потому что он не будет загружать тип, если не найдет сборку), а затем перезапишите include, чтобы запустить конструктор в движение. Я уверен, что это является причиной проблемы, но если нет:
- Возиться с вашим
src
атрибут и проверьте в файле *.designer, какой тип определен. - Определите это вручную в своем файле code-behind вместо того, чтобы позволить дизайнеру сделать это.