2012-10-18 59 views
2

到目前爲止,我已經嘗試了下面的代碼,通過DNN中的頁面上的代碼添加模塊。如何以編程方式在我的DNN頁面上添加模塊

protected void Page_Load(object sender, EventArgs e) 
{ 
     ModuleController MC = new ModuleController(); 
     ModuleInfo MInfo = new ModuleInfo(); 
     MInfo = MC.GetModule(507, 116,false);//Just Hard coded for testing 
     MInfo.TabID = PortalSettings.ActiveTab.TabID; 
     MInfo.PaneName = "ContentPane"; 
     MInfo.Alignment = "left"; 
     MC.AddModule(MInfo);//Line throwing error :- 

} 

我想添加一個模塊,它存在於tabid=116pageLoad有我當前標籤頁或頁面moduleId=507 Event.But最後一行拋出一個錯誤說

"Violation of UNIQUE KEY constraint 'IX_TabModules_UniqueId'. Cannot insert duplicate key in object 'dbo.TabModules'. The duplicate key value is (555ba77a-be19-40a0-bb72-559672230345)." 

請告訴我我在哪裏做錯了?這是添加模塊的正確方法嗎?

回答

4

,我注意到的第一件事是,你有效地試圖將模塊的同一個實例添加到數據庫中。您已更改TabID,但其他所有ModuleInfo實例中的其他ID仍然存在。

看着how DNN adds an existing module(看看DoAddExistingModule法),他們通過在ModuleInfo實例調用Clone()開始,然後重置UniqueId(這是你打的約束):

newModule.UniqueId = Guid.NewGuid(); 
+0

非常感謝...它幫助了我。 – Pranav

+0

這也正是讓我迷戀的地方。感謝Brian! – DotNetNuclear

相關問題