gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 07:18:06 25 4
gpt4 key购买 nike

在内容树中,结构如下

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 using(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();
}
}

关于asp.net - 如何在 Sitecore 中以编程方式创建项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35776380/

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