Вы можете попробовать превратить ваш фрагмент кода в Templated Razor Delegate .
На примере Фила Хаака вы можете создать помощника, который будет выглядеть примерно так:
public static class RazorExtensions
{
public static HelperResult Traverse(this Action<PageViewMoidel> traverse,
Func<T, HelperResult> template)
{
return new HelperResult(writer =>
{
traverse = (n) => template(n).WriteTo(writer);
});
}
}
Отказ от ответственности: Я не проверял это и удобно пропустил вызов n.Children.Foreach
для упрощения.