2

我正在使用 umbraco 中的 usercontrolwrapper 开发自定义数据类型。我有一些我需要的数据编辑器设置。

dynamic landkaart = new DynamicMedia(umbraco.library.GetPreValues(1100));
dynamic pointer = new DynamicMedia(umbraco.library.GetPreValues(1100));

如您所见,我正在使用该GetPrevalue()方法,因此可以访问这些值。现在唯一的问题是我不想对这些 id 进行硬编码。我想我需要一些类似NodeById()的方法,除了我想要它的属性别名。有谁知道这样的方法,或者知道我可以用来获取属性ID的方法?

4

2 回答 2

2

如果您使用 uComponents,您可以从其名称中获取 Id - 但我不确定这是否适用于 PreValues(您使用的是 Umbraco Contour 吗?)

var prevalueId = uComponents.Core.uQuery.GetNodesByName("MyPrevalueName").First().Id;

要删除幻数硬编码,您可以将“1100”移动到 web.config 中并为其命名:

<add key="PrevalueNodeName" value="MyPrevalueName"/>

var prevalueId = uComponents.Core.uQuery.GetNodesByName(ConfigurationManager.AppSettings["PrevalueNodeName"].ToString()).First().Id;
dynamic landkaart = new DynamicMedia(umbraco.library.GetPreValues(prevalueId));

或者如果预值不喜欢按名称访问:

<add key="PrevalueNodeName" value="1100"/>

var prevalueId = ConfigurationManager.AppSettings["PrevalueNodeName"].ToString())
dynamic landkaart = new DynamicMedia(umbraco.library.GetPreValues(prevalueId));
于 2012-11-07T11:10:09.683 回答
1

这是我想出的解决方案:

Document d = new Document(@Model.Id);
var pt = d.getProperty(propAlias).PropertyType;
var preVals = PreValues.GetPreValues(pt.DataTypeDefinition.Id); 
于 2012-11-08T07:59:06.500 回答