Идея (упрощенная) состоит в том, чтобы пользователь определял свойства во ViewModel, содержащиеся в словаре.Что-то вроде этого:
public class MyViewModel
{
[Required]
public string Name { get; set; }
[DisplayName("User address")]
public string Address { get; set; }
// ...
public IDictionary<string, string> MetaData { get; set; }
}
Предположим, что метаданные содержат несколько дополнительных свойств : PhoneNumber
, Email
и т. Д., К которым вы можете получить доступ с помощью myViewModel.MetaData["PhoneNumber"]
.
Я хотел бы использовать эти дополнительные свойства MetaData в помощниках HTML на стороне просмотра, как если бы я использовал обычные свойства.
Итак, вПомимо использования стандартных свойств как:
Html.TextBox("Name")
Я также хотел бы использовать эти дополнительные свойства:
Html.TextBox("PhoneNumber")
Мои исследования привели меня к наследованию от DataAnnotationsModelMetadataProvider
(так как необходимотакже поддерживают стандартные атрибуты DataAnnotations для стандартных свойств) и пытаются выяснить, что именно там нужно переопределить, чтобы добавить дополнительных свойств в качестве дополнительных элементов ModelMetadata, но я немного застрял.
Я на правильном пути?Любой дополнительный указатель, который мог бы помочь мне здесь?
Спасибо