2

umbraco で usercontrolwrapper を使用してカスタム データ型を開発しています。値が必要な dataeditorsettings がいくつかあります。

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 に答える