«Модель» в .Net MVC - PullRequest
       5

«Модель» в .Net MVC

2 голосов
/ 05 октября 2010

Как структуры данных, такие как Linq 2 SQL, ADO.Net Data Entities и DataSets, связаны с «моделью», определенной в .Net MVC.

Причина, по которой я спрашиваю, заключается в том, что я пытаюсь изучить все тонкости платформы .Net, не опираясь на многие инструменты, которые облегчают и скрывают от вас работу.

«Модель», которую я строю в своем исследовательском приложении, - это просто команды PostgreSQL для обновления базы данных. Я целенаправленно не использую «фреймворк» для данных.

Я обнаружил, что большая часть функциональности, которая входит в состав .Net MVC framework, не работает для меня. Такие вещи, как UpdateModel () и все, что связано с ModelState, похоже, не признают происходящее.

Большая часть этой функциональности связана с использованием Linq 2 SQL или ADO.Net Data Entities? Если это так, это нормально, я просто пока не совсем понимаю отношения.

Ответы [ 3 ]

2 голосов
/ 05 октября 2010

В отличие от представлений и контроллеров, на самом деле нет никаких ограничений в отношении того, что представляет собой модель в приложении ASP.NET MVC. Он просто позволяет вам моделировать данные в вашем приложении и четко и безопасно выражать свои намерения, не прибегая к использованию словарей, таких как ViewData, для передачи данных.

С точки зрения функциональности, связанной с моделью, я считаю (не уверен на 100%), что она основана на наличии открытых свойств в объектах модели. Если вы вызываете UpdateModel или его родственников, он устанавливает общие свойства для объекта модели на основе данных формы и т. Д. Все, что он делает, устанавливает свойства для этого объекта в памяти, если находит подходящие свойства, которые соответствуют входам формы и т. Д. по-прежнему нужно включать логику, чтобы фактически сохранить это в базе данных или что-то еще, что вы хотите сделать.

Надеюсь, это направит вас как минимум в правильном направлении.

1 голос
/ 08 октября 2010

В основном ваш объект "Модель" должен иметь конструктор без параметров и публичные свойства get / set, чтобы он мог легко функционировать с DefaultModelBinder.

Совет: я полагаю, что если вам не удастся определить конструктор без параметров, для вас будет выведен пустой (просто чтобы вы не волновались: "ааа! У меня нет конструктора без параметров").

Так что это будет нормально работать:

public class Customer
{
    public int ID { get; set; }
    public string Name { get; set; }
    public string Number { get; set; }
    public string Email { get; set; }
}
1 голос
/ 08 октября 2010

Разобрался. Ради полноты ...

Итак, для моделей в .Net существует «минимальный стандарт».

Это НЕ принято в качестве модели:

namespace MVCApplication.Models
{
    public class Person
    {
        public int ID;
        public string Name;
        public string Title;    
        public string Description;      
        public string Phone;     
        public string Address;      
        public string Country;              

        public Person()
        {

        }

    }
}

Это принято в качестве модели:

namespace MVCApplication.Models
{
    public class Person
    {
        private int _ID;
        private string _Name;
        ...

        public Person() {}

        public int ID { get{ return _ID } set{ this._ID = value } }
        public int Name { get{ return _Name } set{ this._Name = value } }
        ...
    }
}

Не могу сказать, что полностью понимаю, почему, но, по крайней мере, теперь я знаю.

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