Чтобы ответить на ваш первый вопрос, вы можете использовать классы друзей. Например, если у вас есть модель «Пользователь», вы можете создать класс приятеля «UserMetadata». Затем вы можете добавить атрибуты к свойствам в классе приятелей вместо основного класса. ASP.NET MVC полностью поддерживает это и будет использовать ваш класс друзей для таких вещей, как проверка и отображаемое имя. Вот как вы объявляете класс друзей:
[MetadataType(typeof(UserMetadata))]
public class User
{
public string Name { get; set; }
}
public class UserMetadata
{
[Required]
public object Name { get; set; }
}
Обратите внимание, что тип свойства в классе собеседника всегда может быть "объектом", потому что MVC не смотрит на тип свойства в классах собеседника.
Обратите внимание, что MetadataTypeAttribute можно найти в пространстве имен System.ComponentModel.DataAnnotations.
По второму вопросу вы можете посмотреть ответ, который я разместил здесь:
Ресурс по умолчанию для аннотаций данных в ASP.NET MVC