我尝试使用ContentPicker获取所选内容但是在调试代码时。它只是在我的ContentPicker中返回一个null。
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的唯一原因是调试。
答案 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模型,准备好并且易于在文档中使用。