2014-10-20 45 views
1
我在DotNetNuke的使用DDRMenu

從我的站點結構選擇菜單節點,並在我的模板DotNetNuke的DDRMenu設置NodeSelector在後面的代碼

<%@ 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沒有NodeSelector屬性。 UI.UserControl。

錯誤「System.Web.UI.UserControl」不包含關於「NodeSelector」和沒有擴展方法「NodeSelector」接受類型「System.Web.UI.UserControl」的第一個參數的定義可以發現(是否缺少using指令或程序集引用嗎?)C:\項目\ eWolf2012 \ dev的\ DNN \ Portals_default \皮膚\ 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裝配在當前項目中(因爲它不會加載類型,如果沒有找到該組件),然後重寫包括踢設計成運動。我相當有信心,這是問題的原因,但如果沒有:
  • Fiddle with your src attribute並檢查* .designer文件中定義了什麼類型。
  • 在您的代碼隱藏文件中手動定義它,而不是讓設計人員這樣做。
+0

我有DNN \ bin \ DotNetNuke.Web.DDRMenu.dll作爲參考在我的項目和代碼背後使用DotNetNuke.Web.DDRMenu設置。但設計師指定了錯誤的類型。我會嘗試手動定義它,或者檢查設計師 – spankmaster79 2014-10-21 12:43:50

+0

@ spankmaster79有時會這樣做,特別是當您在DNN中不存在的項目中工作時。如果您不想與設計師戰鬥,您也可以手動將控件投射到SkinObject – samy 2014-10-21 12:49:36

+0

我已將它從設計器中刪除,並在我的代碼中將其手動轉換爲SkinObject。現在它編譯和工作。大thx – spankmaster79 2014-10-21 12:57:14

相關問題