Похоже, что-то изменилось. Изучив источник MVC 3, я обнаружил, что prop.HideSurroundingHtml
используется для определения, когда печатать окружающий HTML, а не для печати только скрытого элемента. Следующий шаблон допускает несколько уровней визуализации редактора для графа объектов:
@if (ViewData.TemplateInfo.TemplateDepth > 2)
{
@(ViewData.ModelMetadata.Model != null ?
ViewData.ModelMetadata.SimpleDisplayText :
ViewData.ModelMetadata.NullDisplayText)
}
else
{
foreach (var prop in ViewData.ModelMetadata.Properties.Where(pm => pm.ShowForEdit && !ViewData.TemplateInfo.Visited(pm)))
{
if (!prop.HideSurroundingHtml)
{
if (!String.IsNullOrEmpty(Html.Label(prop.PropertyName).ToHtmlString()))
{
<div class="editor-label">@Html.Label(prop.PropertyName)</div>
}
@Html.Raw("<div class=\"editor-field\">")
}
@Html.Editor(prop.PropertyName)
if (!prop.HideSurroundingHtml)
{
@Html.ValidationMessage(prop.PropertyName, "*")
@Html.Raw("</div>")
}
}
}