当前位置 : 主页 > 网络编程 > ASP >

asp.net – 如何在Sitecore中以编程方式创建项目

来源:互联网 收集:自由互联 发布时间:2021-06-24
在内容树中,结构如下 Home -England -France -Germany 有一个子布局(CommentsForm.ascx),用于所有3个页面.当用户浏览“法国”并提交评论时,“评论”项目应保存在“法国”下,依此类推. 在这种情况
在内容树中,结构如下

Home
 -England
 -France
 -Germany

有一个子布局(CommentsForm.ascx),用于所有3个页面.当用户浏览“法国”并提交评论时,“评论”项目应保存在“法国”下,依此类推.

在这种情况下,父项(必须在其下创建新项)是动态的.那么,在这种情况下如何获取父项.它是否正确?

protected void btnSubmit_Click(object sender, EventArgs e)
{
 Sitecore.Data.Database masterDB =   Sitecore.Configuration.Factory.GetDatabase("master");

 Item parentItem = Sitecore.Context.Item;

 string name = "Comment_" + Sitecore.DateUtil.IsoNow;
 TemplateItem template = masterDb.GetTemplate("/sitecore/templates/userdefined/Comment");     

 using (new SecurityDisabler())
 {
   //how to go about here??
   //newItem["Author"] = txtAuthor.text;
   //newItem["CommentText"] = txtComments.Text;
   //parentItem.Add("name", template);
 }
}
您可以在生产中使用UserSwitcher更安全,但您也可以使用SecurityDisabler(newSecurityDisabler()){}

编辑和重命名必须在Editing.BeginEdit()事务中进行

Sitecore.Data.Database masterDB =   Sitecore.Configuration.Factory.GetDatabase("master");

 Item parentItem = Sitecore.Context.Item;

 string name = "Comment_" + Sitecore.DateUtil.IsoNow;
 var template = masterDb.GetTemplate("/sitecore/templates/userdefined/Comment");     

using (new Sitecore.SecurityModel.SecurityDisabler())
{
try
{
  Item newItem = parentItem.Add("Name", template);
  if (newItem!=null)
  {
    newItem.Editing.BeginEdit();
   newItem["Author"] = txtAuthor.text;
   newItem["CommentText"] = txtComments.Text;
   newItem.Editing.EndEdit();
  }
}
catch
    {
      newItem.Editing.CancelEdit();
    }
 }
网友评论