2017-10-24 3 views
2

最近Umbracoで作業を開始しましたが、配列から最後の子を取得しようとしています。これは私がこれまでにやっていることです:配列内の最後の子を取得

@inherits Umbraco.Web.Macros.PartialViewMacroPage 

@{var page = Umbraco.Content(1127).Children[Children.Length - 1]} 

<h5><a href='@page.Url'>@page.NewsTitle</a></h5> 
<p>@page.NewsIntro</p> 
<p class='read-more'><a href='@page.Url'>Read more...</a></p> 

編集:次のように

ソリューションは、次のとおりです。

@inherits Umbraco.Web.Macros.PartialViewMacroPage 

@{ 
    var length = Umbraco.Content(1127).Children.Count(); 
    var page = Umbraco.Content(1127).Children[length - 1]; 
} 

<h5><a href='@page.Url'>@page.NewsTitle</a></h5> 
<p>@page.NewsIntro</p> 
<p class='read-more'><a href='@page.Url'>Read more...</a></p> 
+0

私はumbracを使ったことはありませんでしたが、 'Children.length - 1'は妥当と聞こえます。なぜそれは動作しません。 'page'には何が入っていますか? – Wndrr

+2

確かに '.Length'は' .length'ではなく、C#afterallですか? – Lloyd

+0

これは私の思考@Wndrrでした。このページには、最新の記事をサイトのフッタ – MarkHughes88

答えて

4

試してみてください。@{var page = Umbraco.Content(1127).Children[Children.Length - 1]}

LengthLをケースに入れ、上に注意してください。 C#がの大文字と小文字の区別の場合、lengthという名前の配列プロパティはありません。

+0

すてきなスポット。 Iveはこれを修正しましたが、残念ながら問題を解決しません – MarkHughes88

+0

@ MarkHughes88何のエラーが出ていますか? – InBetween

+0

部分的なビュースクリプト(ファイル:〜/ Views/MacroPartials/footerNews.cshtml)の読み込み中のエラー – MarkHughes88

3

私がそこにあるC#コードでLinqを使用できるのであれば、使用できる "Last()"拡張メソッドがあります。このよう

 @using System.Linq 
     @{var page = Umbraco.Content(1127).Children.Last()} 
+0

で解決策を掲載しましたが、これはうまくいかないようです。このプロジェクトで使用されているかどうかわからない私はLinqとImに慣れていません – MarkHughes88

+0

残念ながら、残念ながら私はさらに助けることができません。私はUmbracoでの経験はゼロです。 –

0

UmbracoはにisLastを含む "isHelpers"()の束を持っています。 isLastを使用したexanpleがあります。

foreach(var page in Umbraco.Content(1127).Children) 
{ 
    if(page.IsLast()) 
    { 
     <h5><a href='@page.Url'>@page.NewsTitle</a></h5> 
     <p>@page.NewsIntro</p> 
     <p class='read-more'><a href='@page.Url'>Read more...</a></p> 
    } 
} 

Umbracoが公開している他のisHelpersのいくつかを紹介します。

IsHelper方法.IsFirst([ストリングvalueIfTrue] [文字列valueIfFalse])現在のノードがコレクション内の最初のアイテムである場合 テスト

.IsNotFirst([ストリングvalueIfTrue] [文字列valueIfFalse])試験 現在のノードがコレクション内の最初の項目ではない場合

.IsLast([ストリングvalueIfTrue] [文字列valueIfFalse])試験電流 ノードが収集

.IsNotLastの最後の項目が(ある場合[ストリングvalueIfTrue] [文字列valueIfFalse])テスト電流 ノードがコレクション内の最後の項目でない場合

.IsPosition(INTインデックス[、列valueIfTrue] [文字列valueIfFalse])試験 現在のノードがである場合コレクション内の指定されたインデックス

.IsNotPosition(INTインデックス[、列valueIfTrue] [文字列valueIfFalse])現在のノードが収集

.IsModZero([文字列内の指定されたインデックスでない場合 テストvalueIfTrue ] [、string valueIfFalse])現在の値が の場合、指定された数値でノード位置が均等に割り切れるかどうかを検定する

現在のノード位置が所定数

.IsEven([ストリングvalueIfTrue] [文字列valueIfFalseによって(モジュラス)均等分割可能でない場合

.IsNotModZero([ストリングvalueIfTrue] [文字列valueIfFalse])試験])現在の ノードの位置が偶数であるかどうかをテストする

。ISODD([ストリングvalueIfTrue] [文字列valueIfFalse])をテストします反復における現在のノードがある場合、現在の ノード位置はテスト.IsEqual(IPublishedContent otherNode〔、列valueIfTrue] [文字列 valueIfFalse])

奇数の場合別のノード

.IsDescendant(IPublishedContent otherNode〔、列valueIfTrue] [文字列 valueIfFalse])試験を(IDで)等価 あなたの反復における現在のノードが別のノード

の子孫である場合。 IsDescendantOrSelf(IPublishedContent otherNode [、文字列 valueIfTrue] [文字列valueIfFalse])テストあなた 反復における現在のノードは、ノード

.IsAncestor(IPublishedContent otherNode〔、列valueIfTrue] [文字列 valueIfFalse])をテスト別のノードの子孫であるかである場合あなた 反復における現在のノードが別のノードの祖先である場合、あなたの反復における現在のノードが別のノード

.IsAncestorOrSelf(IPublishedContent otherNode〔、列 valueIfTrue] [文字列valueIfFalse])試験の 祖先である場合ノードであるか

関連する問題