Я ищу расширенные ресурсы по настройке шаблонов редактора MVC3 - PullRequest
7 голосов
/ 28 марта 2012

Я боролся с моей настройкой EditorForModel и именованием элементов HTML, испускаемых моим кодом и встроенными помощниками MVC3.Мой код очень прост, и в нем явно отсутствуют некоторые тонкости, такие как правильное присвоение имен отображаемым элементам.

Я ищу расширенные ресурсы, которые могут помочь мне отточить эту область моего текущего развития, особенно с цельюподразделение модели основного вида на меньшие подмодели, чтобы я мог применить, скажем, три вызова EditorForModel в одном представлении, чтобы разделить созданные редакторы моделей по столбцам формы или страницам вкладок.

Мое текущее «переопределение»шаблон EditorForModel по умолчанию выглядит следующим образом:

@{
    // TODO Filtering for subsets of model without having to bind separate models.
        var properties = ViewData.ModelMetadata.Properties.Where(pm => pm.ShowForEdit && !pm.IsComplexType && !ViewData.TemplateInfo.Visited(pm));
    }
<fieldset>
    <legend>@ViewData.ModelMetadata.DisplayName</legend>
    <ul class="form-column">
        @foreach (var prop in properties)
        {
            <li>
                    @{
            if (prop.HideSurroundingHtml)
            {
                        @Html.Editor(prop.DisplayName ?? prop.PropertyName)
            }
            else
            {
                        @Html.Label(prop.PropertyName, (prop.IsRequired ? "* " : "") + (prop.DisplayName ?? prop.PropertyName))
                        @Html.Editor(prop.PropertyName)
            }
                    }
            </li>
        }
    </ul>
</fieldset>

Я скопировал и изменил этот код из примера шаблона Object.ascx на этой статье на блог Брэда Уилсона .К каким ресурсам я могу обратиться, чтобы обогатить это, чтобы удовлетворить как можно больше сценариев настолько богатым образом, насколько это возможно?

1 Ответ

1 голос
/ 02 апреля 2012

Ваш шаблон кажется довольно хорошим для очень общего редактора.Если я правильно понимаю ваш вопрос, вы ищете другие способы разбить и отфильтровать свойства вашей модели.

Один из способов фильтрации модели на подмножества без необходимости создания подмоделей - использование атрибутов.Вы можете создать столько атрибутов, сколько захотите, и заставить их реализовать IMetadataAware .Там вы можете добавить произвольные свойства в пакет свойств ModelMetadata.AdditionalValues, и ваши шаблоны редактора проверят эти значения.

В качестве альтернативы вы можете реализовать свой собственный пользовательский ModelMetadataProvider, который возвращает пользовательский объект ModelMetadata, который имелсвойства, которые вы хотели.

Любой из них позволит вам просто аннотировать вашу модель для определения поведения фильтра.

Оба эти метода описаны кем-то еще, Брэдом Уилсоном, в этом посте в блоге.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...