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内の他のすべての IDはそのままです。ModuleInfo

DNN が既存のモジュールをどのように追加するか(メソッドを参照) を見ると、インスタンスDoAddExistingModuleを呼び出すことから開始し、次に(これがヒットしている制約です) をリセットします。Clone()ModuleInfoUniqueId

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