Сначала, как для любого метода расширения, надо заиметь свой публичный статический класс и в нём определить публичные статические методы расширения того, что вы хотите, собственно, расширить.
В данном примере я расширил строковые и булевские переменные весьма простыми, но чрезвычайно полезными и короткими в употреблении, условиями:
public static class RazorExtensions
{
public static HelperResult IfHasValue(this string str,
Func<object, HelperResult> template)
{
return new HelperResult(writer =>
{
if (!string.IsNullOrWhiteSpace(str))
template(str).WriteTo(writer);
});
}
public static HelperResult IfTrue(this bool @bool,
Func<object, HelperResult> template)
{
return new HelperResult(writer =>
{
if (@bool)
template(true).WriteTo(writer);
});
}
}
Примеры использования:
<a @Model.Boolean.IfTrue(@
@Model.String.IfHasValue(@<p><big>@itembig>p>)
Стало ли лучше? )
Источники (раз, два)