Что такое правильное поведение UpdateModel в ASP.NET MVC?

Мне интересно знать, что вы, ребята, считаете нужным считать "правильным поведением" с точки зренияUpdateModel метод в ASP.NET MVC.

Причина, по которой я спрашиваю здесь, возможно, заключается в том, что эта функциональность "разработана" Кто-то мог бы уточнить, почему это так, и, возможно, способ назвать это по-другому, чтобы достичь желаемой функциональности, что, я думаю, было бы так, как 90% людей хотели бы, чтобы это работало?

По сути, моя жалоба связана с поведением процесса связывания внутриUpdateModel.

Предположим, вы хотите обновить форму с помощью простогоSave Метод действия, для которого поля данных в форме отражают модель в вашей базе данных; изначально для сохранения запроса мы могли бы получить существующую модель из БД, а затем обновить соответствующие поля, которые были изменены, отправленные с помощьюFormCollection а затем обновляетсяUpdateModel к нашей существующей модели. Эта функция, однако кажется, что какие-либо из существующих свойств в этом объекте, заполненном БД, "сбрасываются"; и под этим я подразумеваю, что для него заданы значения по умолчанию, равные нулю или инициализации, как если бы это был совершенно новый объект, за исключением явно тех, которые соответствуют объектам вFormCollection.

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

Я считаю, что это нежелательное поведение, иUpdateModel следует обновлять свойства только в тех случаях, когда он находит совпадение свойств вFormCollection, Это будет означать, что все ваши существующие свойства не будут затронуты, но ваши обновления будут установлены. Однако из того, что было выведено до сих пор, очевидно, что это не так - похоже, онbrand new copy объекта обновляет свойства из формы, а затем возвращает новый объект.

И, наконец, для того, чтобы понять, насколько это тяжело, единственный способ действительно сохранить полусложную форму и сохранить все существующие данные объекта - это вручную женитьсяeach свойство с соответствующим свойством формы, чтобы абсолютно гарантировать только те свойства, которые существуют в форме, обновляются.

Похоже,

Those who agree this is by design, is my approach of form marrying the best way? Or, how have you tackled this in this?

Пожалуйста, не стесняйтесь высказывать свои мысли по этому вопросу, ребята, спасибо.

Вот еще один случай, когда кто-то страдает от этой проблемы:
Вызов UpdateModel с набором сложных типов данных сбрасывает все несвязанные значения?

Ответы на вопрос(4)

Ваш ответ на вопрос