2012-06-20 32 views
2

我有一個相同的內容類型「新聞」的6項,在每個項目中我有一個領域newsIntro。我希望把在特定頁面中的字段另一頁上,所以我需要針對特定​​的領域,因此它可能是newsIntro節點1702我試圖像umbraco剃刀 - 從內容獲取字段

的幾件事情@ 1720.newsIntro

怎麼辦我針對某一特定領域

感謝

回答

15

有你應該看看在你學習剃刀一些重要的資源:

  1. Umbraco Razor Feature Walkthrough - 在Umbraco 4.7中的許多新Razor功能的八部分博客系列的例子。

  2. Razor DynamicNode Cheat Sheet - 可用於剃刀DynamicNode對象(包括@Model)的所有屬性和方法的PDF。

  3. Cultiv Razor Examples - 您可以下載並使用WebMatrix或IIS打開並查看使用Razor訪問屬性的各種方法的Umbraco網站。

  4. Razor snippets - 來自我們的Umbraco的不同摘錄,示例等的彙編。

但在回答你的問題,讓你必須首先獲得實際DynamicNode對象,然後使用屬性別名來訪問屬性值的特定節點的屬性。例如:

@{ 
    //Get the node 
    dynamic node = Library.NodeById(1720); 

    // Display the property 
    @node.newsIntro 
} 

從當前頁面訪問屬性,您只需使用Model

@Model.newsIntro 

@Model.bodyText 

@Model.Name 
1

用一把umbraco 7我使用此代碼來獲取道具從不同的頁面erty:

@Umbraco.Content(1720).newsIntro 
+0

爲了從'foreach'中(例如使用查詢生成器)從'item.Id'替換硬編碼的id('1720')。 – ahwm

4

首先,從我們的TypedContent方法的IPublishedContent對象,然後使用GetPropertyValue檢索字段的值。

@{ 
    int nodeId = 1720; 
    IPublishedContent contentNode = Umbraco.TypedContent(nodeId); 
    var newsIntro = contentNode.GetPropertyValue("newsIntro"); 
} 

<p>@newsIntro</p> 
+1

這正是我所需要的。我在'foreach'循環中需要它,所以它已經有了'var item in selection'選項,所以我只是將上面的內容更改爲'Umbraco.TypedContent(item.Id)',而忽略了第一行。完美工作! – ahwm

0

如果內容項1720是父母還是要使用值的頁面的祖先,你可以得到它遞歸這樣的:

@Umbraco.Field("newsIntro", recursive: true) 
0

從內容獲取領域我有使用這個:

@{ 
    var selection = Umbraco.TypedContent(contentId).Children() 
         .Where(x => x.IsVisible()) 
         .OrderBy("CreateDate"); 
} 
@foreach(var item in selection){ 
      @item.GetPropertyValue("fieldName1") 
      @item.GetPropertyValue("fieldName2") 
      @item.GetPropertyValue("fieldName_N") 
}