2

到目前为止,我已经尝试使用下面的代码通过 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但最后一行抛出一个错误说moduleId=507pageLoad

"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

1 回答 1

5

我注意到的第一件事是您正在有效地尝试将模块的相同实例添加到数据库中。您已经更改了TabID,但实例中的所有其他 IDModuleInfo仍然存在。

查看DNN 如何添加现有模块(查看DoAddExistingModule方法),他们首先调用Clone()实例ModuleInfo,然后重置UniqueId(这是您遇到的约束):

newModule.UniqueId = Guid.NewGuid();
于 2012-10-18T17:30:48.003 回答