Присоединение проверки к объектам EF, используемым в контроллерах / представлениях MVC? - PullRequest
3 голосов
/ 12 февраля 2011

Мы собираем вместе быстрый проект (формы CRUD) и решили пропустить модели представлений и использовать объекты EF непосредственно в контроллерах и представлениях.Поскольку я не привык к такому подходу, я запутался в обработке валидации.

Например: поле БД имеет длину 25. Как, на мой взгляд, это переносится (если возможно) в ограничение проверки?Если бы я использовал промежуточную модель, я бы прикрепил атрибуты к свойствам модели, и это сработало бы.Как бы я сделал это, используя объекты EF напрямую?Благодарю.

Ответы [ 3 ]

7 голосов
/ 12 февраля 2011

Это можно сделать с помощью атрибута MetadataType в сгенерированных Ef классах.EF генерирует частичные классы.Таким образом, они могут быть расширены и атрибут добавлен к нему.Затем можно написать еще один «класс приятелей», который может иметь украшение участника.Например

[MetadataType(typeof(EFGeneratedClass_MetaData))]
public partial class EFGeneratedClass
{
}

public partial class EFGeneratedClass_MetaData
{
    [Required]
    [Display(Name="Member1 Display")]
    public string Member1 {get; set;}
}
0 голосов
/ 12 февраля 2011

Вам нужно использовать частичный метакласс «приятель» и украсить его атрибутами проверки.

Например, скажем, ваша сущность была 'Foo':

[MetadataType(typeof(FooMetadata))]
public partial class Foo {}

public class FooMetadata
{
    //apply validation attributes to properties
    [Required]
    [Range(0, 25)]
    [DisplayName("Some Neato Property")]
    public int SomeProperty { get; set; }
}

Для получения дополнительной информации см. Эту ссылку на MSDN:

Настройка проверки поля данных в модели

Приветствие.

0 голосов
/ 12 февраля 2011

Самое простое, что можно сделать, - это использовать атрибуты DataAnnotations, которые находятся в пространстве символов System.ComponentModel.DataAnnotations.

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

[StringLength(25)]

и назовите это днем.

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