Pra*_*nav 2 c# dotnetnuke dotnetnuke-module
到目前为止,我已尝试下面的代码通过我的页面在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 :-
}
Run Code Online (Sandbox Code Playgroud)
我想上添加一个模块,它是存在tabid=116且moduleId=507在我当前标签页或页面pageLoadEvent.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)."
Run Code Online (Sandbox Code Playgroud)
请告诉我我在哪里做错了?这是添加模块的正确方法吗?
我注意到的第一件事是你有效地尝试将相同的模块实例添加到数据库中.您已经更改了TabID,但实际上所有其他ID ModuleInfo仍然存在.
纵观DNN如何将现有模块(在外观DoAddExistingModule法),它们通过调用启动Clone()的ModuleInfo实例,然后重新设置UniqueId(这是你打的约束):
newModule.UniqueId = Guid.NewGuid();
Run Code Online (Sandbox Code Playgroud)