Почему MetadataType не выполняет мою проверку в подходе с базой данных?

Я использовал Database-First для создания класса модели (файл EDMX), и я хочу проверить, используя "MetadataType". Я читаю здесь решения, но они не работают для меня.

Вот мой код:

[MetadataType(typeof(MovieEntitiesMetaData))]
public partial class MovieEntities
{        
}

public class MovieEntitiesMetaData
{
    [DisplayFormat(DataFormatString = "{0:c}")]
    public Nullable<global::System.Decimal> PRICE { get; set; }
}

Здесь чего-то не хватает, или почему мое решение не сработало?

1 ответ

Решение

Создайте новый файл с именем MoviePartial.cs и поместите в него следующий код:

[MetadataType(typeof(MovieMetaData))]
public partial class Movie
{    
    internal sealed class MovieMetaData
    {
        [DisplayFormat(DataFormatString = "{0:F2}", ApplyFormatInEditMode = true)]
        [Required(ErrorMessage = "Price is required")]
        public decimal? PRICE { get; set; }
    }
}

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

В представлении Создать / Редактировать вы должны иметь:

@Html.EditorFor(m => m.PRICE)

В представлении Details вы должны иметь:

@Html.DisplayFor(m => m.PRICE)

Подробнее об этом, просто следуйте этому хорошему пошаговому руководству:

Проверка с помощью валидаторов аннотации данных (C#)

Другие вопросы по тегам