簡體   English   中英

如何以編程方式在DNN中的頁面上添加模塊

[英]How to add a module on my page in DNN programatically

到目前為止,我已經嘗試過以下代碼通過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=116並在pageLoad Event的當前選項卡或頁面上具有moduleId=507但是最后一行拋出錯誤

"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)."

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

我注意到的第一件事是您正在有效地嘗試將模塊的相同實例添加到數據庫中。 您已經更改了TabID ,但是在其他情況下, ModuleInfo實例中的所有其他ID仍然存在。

查看DNN如何添加現有模塊 (在DoAddExistingModule方法中查看),首先從在ModuleInfo實例上調用Clone() ,然后重置UniqueId (這是您要遇到的約束):

newModule.UniqueId = Guid.NewGuid();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM