1

最近、4.09 から Umbraco 4.10 にアップグレードしました。トップ ナビゲーションを生成するために使用する、かなり一般的で単純な小さなマクロがあります。レコードをチェックして、カウントの最後かどうかを確認し、そうでない場合はパイプ記号を視覚的な区切りとして追加します。これは、4.09までのすべてのバージョンで期待どおりに機能しましたが、アップグレード後、すべてのアイテムが最後のアイテムでもパイプ記号を取得します。

@inherits umbraco.MacroEngines.DynamicNodeContext

@{ 
  var level = String.IsNullOrEmpty(Parameter.Level) ? 1 : int.Parse(Parameter.Level); 
  var ulClass = String.IsNullOrEmpty(Parameter.UlClass) ? "" : String.Format(" class=\"{0}\"", Parameter.UlClass); 
  var parent = @Model.AncestorOrSelf(level);
  var pages = parent.Children.Where("Visible");
  if (parent != null) {
    <ul class="topNav">
    @foreach (var item in pages) {
        var selected = Array.IndexOf(Model.Path.Split(','), item.Id.ToString()) >= 0 ? " class=\"selected\"" : "";
        if (item != (pages.Last()))
        {
          <li@Html.Raw(selected)>
            <a href="@item.Url">@item.Name |</a>
          </li>
        }
        else
        {
           <li@Html.Raw(selected)>
            <a href="@item.Url">@item.Name</a>
          </li>
        }
      }
    </ul>
  }
}

何が変わったのかはわかりませんが、(私のコードでは) pages.Last() が true になることはないようです。
誰にもアイデアはありますか?- ありがとう

4

2 に答える 2

1

IsNotLast()次のようにヘルパーを使用して、必要な結果を得ることができるはずです。

<li@Html.Raw(selected)>
    <a href="@item.url">@item.Name@(item.IsNotLast() ? " |" : "")</a>
</li>

使用可能な IsHelpers の詳細については、 Umbraco Razor 機能のチュートリアル - パート 7を参照してください。トラバースしているノードに関する情報が必要な場合に非常に便利です。

于 2012-11-17T05:40:48.440 に答える
0

最終的には少し違った方法で行ったのですが、なぜこれが変わったのかまだわかりません。

それ以外の

if (item != (pages.Last()))

一緒に行きました

if (item.Index() != (pages.Count()-1))

今のところ解決しましたが、他の誰かがこの問題に遭遇した場合は、フィードバックを歓迎します

于 2012-11-16T17:29:19.977 に答える