我在DotNetNuke中使用DDRMenu从我的网站结构中选择菜单节点,并在我的模板中仅显示特定导航中的子节点
<%@ 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属性。
错误&#39; System.Web.UI.UserControl&#39;不包含&#39; NodeSelector&#39;的定义没有扩展方法&#39; NodeSelector&#39;接受类型&#39; System.Web.UI.UserControl&#39;的第一个参数。可以找到(你错过了使用指令或程序集引用吗?)C:\ Projects \ eWolf2012 \ dev \ DNN \ Portals_default \ Skins \ JWEwolfSkin2012 \ Simple.ascx.cs 141 24 JWEwolfSkin2012
有没有办法实现这个目标?
亲切的问候
答案 0 :(得分:1)
通常DDRMenu中的Menu.ascx继承自DDRMenu SkinObject
:
<%@ Control Language="C#" AutoEventWireup="false" EnableViewState="false" Inherits="DotNetNuke.Web.DDRMenu.SkinObject" %>
由于您正在讨论更改后面的代码,我猜您正在使用嵌入Menu.ascx的自定义控件。在这种情况下,您应该能够访问NodeSelector
属性,因为它存在于SkinObject
类中。
我怀疑正在发生的是设计师未正确加载您的控件类型,并且它返回到没有UserControl
属性的NodeSelector
类型。
尝试以下方法:
src
attribute并在* .designer文件中签入定义的类型。