Sitecore:如何将复杂的表单输入字段读入Items?

时间:2014-12-12 18:34:38

标签: forms input sitecore

我有一个表单,其中包含两个与Sitecore模板匹配的输入字段:一个文本字段和一个常规链接字段。

现在我想将两个输入字段都读入一个项目。对于第一个文本字段,它的工作方式如下:

newItem.Fields["Comment Author"].Value = txtAuthor.Text;

但它不适用于复杂字段类型Link:

newItem.Fields["Comment Author Link"].Value = txtLink.Text;

该项目在Sitecore中创建,但链接字段为空。那么我如何阅读像Links和DropDowns这些复杂的领域呢?

3 个答案:

答案 0 :(得分:0)

首先尝试投射Field,然后保存它。

前:

var link = (Sitecore.Data.Fields.LinkField)newItem.Fields["Comment Author Link"]
link.Url = txtLink.Link;

答案 1 :(得分:0)

对于复杂字段,您可以将这些字段强制转换为正确的类型。您将在Sitecore.Data.Fields命名空间中找到所有Sitecore字段的类型。

对于您的链接字段,您必须执行以下操作:

Sitecore.Data.Fields.LinkField myLink = newItem.Fields["Comment Author Link"];
myLink.Url = txtLink.Text;

请注意,Sitecore会以不同方式处理内部链接,媒体链接和外部链接,因此您应确保查看您希望使用的链接类型。看看这里 - > GeneralLink in Sitecore了解这方面的更多细节。

答案 2 :(得分:0)

最后我得到了它:

newItem.Editing.BeginEdit();

LinkField linkField = new LinkField(newItem.Fields["Comment Author Website"]);
linkField.Url = txtLink.Text;
linkField.TargetID = newItem.ID;
linkField.Title = txtLink.Text;
linkField.Text = txtLink.Text;
linkField.Target = "_blank";
linkField.LinkType = "external";

newItem.Editing.EndEdit();

非常感谢!