2012-11-06 56 views
2

我正在用umbraco中的usercontrolwrapper開發一個自定義數據類型。我有一些dataeditorettings至極,我需要的價值。Umbraco NodeByAlias?

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

正如你可以看到我使用GetPrevalue()方法,所以我可以訪問這些值。現在唯一的問題是我不想對這些ID進行硬編碼。我想我需要一些像NodeById()這樣的方法,除了我希望通過屬性別名的事實。有誰知道這樣的方法,或知道一種方法,我可以用來獲得財產的ID?

Thnx提前!

回答

1

這裏是我想出了一個解決方案:

Document d = new Document(@Model.Id); 
var pt = d.getProperty(propAlias).PropertyType; 
var preVals = PreValues.GetPreValues(pt.DataTypeDefinition.Id); 
+0

+1預值的好例子 - 並不多! – amelvin

+0

Thnx!請記住,在這個例子中preVals是一個數組。因此,要使用這些值可以使用: ((PreValue)preVals [index])。 –

2

如果使用uComponents你可以從它的名字得到一個編號 - (?您使用的是一把umbraco輪廓),但我不知道是否會PreValues一起工作

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)); 

,或者如果prevalues不喜歡的名字被訪問:

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

var prevalueId = ConfigurationManager.AppSettings["PrevalueNodeName"].ToString()) 
dynamic landkaart = new DynamicMedia(umbraco.library.GetPreValues(prevalueId)); 
+0

日Thnx的答案amelvin!但我已經找到了另一個解決方案我會在今天晚些時候發佈。生病仍然標記爲答案;)。 –