ASP.NET MVC で HtmlHelper を拡張メソッドで拡張するのと同じように SitecoreHelperを拡張メソッドで拡張してみます。SitecoreHelper は cshtml で @Html.Sitecore() で返される オブジェクトになります。たとえば、次のように Children という拡張メソッドを定義してみます。引数で指定された Item のサブアイテムの一覧をItemRenderingを使用してレンダリングしたHTMLのマークアップを出力するようにしています。
using Sitecore.Data.Items;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
namespace SC.Mvc.Infrastructure
{
public static class CustomSitecoreHelper
{
public static HtmlString Children(this Sitecore.Mvc.Helpers.SitecoreHelper helper, Item item)
{
StringBuilder builder = new StringBuilder();
var children = item.Children;
foreach (Item c in children)
{
builder.Append(helper.ItemRendering(c).ToHtmlString());
}
return new HtmlString(builder.ToString());
}
}
}
簡単ですが、上記のようなコードを記述することでSitecoreHleper 用の 拡張メソッドを定義できます。
あとは cshtml 内で次のようにすると拡張メソッドを呼び出せるようになります。
@using SC.Mvc.Infrastructure @Html.Sitecore().Children(Model)
簡単ですが説明は以上です。拡張メソッド自体は新しいものではありませんが、Sitecore MVC を使用していると拡張メソッドを使用したい場合もでてくると思われるので覚書として記載しました。