[英]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.