gpt4 book ai didi

c# - 如何以编程方式在我的 DNN 页面上添加模块

转载 作者:行者123 更新时间:2023-12-02 05:26:54 24 4
gpt4 key购买 nike

到目前为止,我已尝试通过以下代码在我的 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=507 pageLoad 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)."

请告诉我哪里做错了?这是添加模块的正确方法吗?

最佳答案

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

查看how DNN adds an existing module (查看 DoAddExistingModule 方法),它们首先在 ModuleInfo 实例上调用 Clone(),然后重置 UniqueId(这是你遇到的约束):

newModule.UniqueId = Guid.NewGuid();

关于c# - 如何以编程方式在我的 DNN 页面上添加模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12953855/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com