ContentPicker返回null

时间:2016-11-30 09:45:42

标签: c# razor umbraco

我尝试使用ContentPicker获取所选内容但是在调试代码时。它只是在我的ContentPicker中返回一个null。

我的文档类型 enter image description here

ContactPerson.cs

using System.Linq;
using umbraco.controls;
using Umbraco.Core.Models;
using Umbraco.Site.Extensions.Extensions;
using Umbraco.Site.Extensions.Models.Media;
using Umbraco.Web;

namespace Umbraco.Site.Extensions.Models.DocumentTypes.Grid
{
    public class ContactPerson
    {
        public ContentPicker contentPicker { get; set; }

        public ContactPerson(IPublishedContent content)
        {
            contentPicker = content.GetPropertyValue<ContentPicker>("contactPersonPicker");
        }
    }
}

ContactPerson.cshtml

@using Umbraco.Site.Extensions.Models.DocumentTypes.Grid
@inherits UmbracoTemplatePage
@{
    Layout = null;
    ContactPerson cp = new ContactPerson(Model.Content);

    string s = "s";
}

<div>test</div>

注意:我有字符串s的唯一原因是调试。

1 个答案:

答案 0 :(得分:1)

默认情况下,ContentPicker返回所选内容节点的ID。尝试先获取字符串,然后查看值是否存在。如果不是 - 重新发布内容或整个网站以强制重建XML缓存。

因此,将它映射到ContentPicker类并不是那么明显,它需要额外的属性,主要是在属性编辑器上,而不是值本身。

ContentPicker的基本用法是:https://our.umbraco.org/documentation/getting-started/backoffice/property-editors/built-in-property-editors/content-picker。关于它,我正在上面写作开始。

我还建议您使用(甚至可以通过NuGet安装) Umbraco核心属性值转换器包:https://our.umbraco.org/projects/developer-tools/umbraco-core-property-value-converters。计划将其包含在Umbraco Core内部,它基本上将常见数据类型的值映射到更方便和可用的值,例如ContentPicker值将是所选文档的IPublishedContent模型,准备好并且易于在文档中使用。