Советы по управлению моделями [ASP.NET MVC] - PullRequest
1 голос
/ 20 августа 2009

Выглядит так, как будто ASP.NET MVC 2 Preview 1 только что был выпущен это означает, что способ выполнения работы может немного отличаться в зависимости от модели. Функция DataAnnotation, позволяющая выполнять проверку свойств в ее модели, хороша, но я не уверен, где ее поставить.

Я создаю свои модели вручную, как рекомендовано в книге Стива Сандерсона о ASP.NET MVC , которая мне подходит идеально. Должна ли я иметь отдельную модель для данных POST, поступающих со страницы просмотра? Скажем, я создавал товар, моя основная модель может выглядеть так:

public class Product {
    [Column(IsPrimaryKey = true, IsDbGenerated = true)] public int ProductID { get; set; }
    [Column] public string ProductName { get; set; }
    [Column] public string ProductDescription { get; set; }
    [Column] public double ProductCost { get; set; }
}

Теперь пример Скотта дает нам DataAnnotations, так что вы можете сделать:

public class Product {
    public int? ProductID { get; set; }

    [Required(ErrorMessage="Must enter a product name!")]
    public string ProductName { get; set; }

    public string ProductDescription { get; set; }

    [Range(1, 500, ErrorMessage="Too expensive!")]
    public double ProductCost { get; set; }
}

В последнем примере будет поле N 1015 *, которое может иметь значение NULL, поскольку оно будет полем с автоинкрементом в базе данных. Теперь оба эти примера будут содержаться в классах и, вероятно, с тем же именем. Лично я не думаю, что моя основная модель должна содержать эти аннотации, поскольку они не должны отвечать за проверку данных. Так я должен иметь отдельные пространства имен с классами в них с разными ролями?

Ответы [ 2 ]

1 голос
/ 20 августа 2009

Лично у меня есть одна модель, которая отправляется в представление и публикуется на контроллере, и обычно я называю их чем-то вроде ProductEditModel. Затем это проверяется и преобразуется в мой тип продукта в контроллере.

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

Проверьте этот скринкаст http://serialseb.blogspot.com/2009/05/my-mvc-best-practices-talk.html он объяснит это лучше и действительно хороший подход к mvc dev

1 голос
/ 20 августа 2009

На мой взгляд, валидация является частью забот вашей модели - держите их вместе.

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