Привязка / публикация частичных свойств в ASP.NET Core 2.1 MVC - PullRequest
0 голосов
/ 26 апреля 2019

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

У меня есть представление, которое использует эту модель.Это представление использует только 4 свойства из 10 свойств.Пользователь будет редактировать только эти 4 свойства.Когда я отправляю это назад.Я получаю значения только для этих 4 свойств, так как это единственные поля, связанные с представлением.Все остальные свойства являются нулевыми.Я не использую какие-либо скрытые теги HTML для привязки других свойств.Таким образом, другие свойства являются пустыми в [HttpPost] ControllerAction.

Мой вопрос:

Есть ли простой способ определить из этих 10 свойств, какие 4 свойства привязаны к представлению и этиединственные свойства, которые мне нужно обновить в базе данных.

Другими словами, знает ли ModelState, какие свойства связаны в представлении?Или есть какой-то другой класс, который точно скажет мне, какие поля связаны с этим «представлением», чтобы я мог написать код для обновления только этих полей в базе данных.

1 Ответ

0 голосов
/ 26 апреля 2019

Вы можете попробовать другой подход, чтобы сделать это:

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

Примерно так:

public void Post(MyViewModel inputModel)
{
    var id = inputModel.Id;
    var dbModel = GetById(id);
    dbModel.Field1 = inputModel.Field1;
    dbModel.Field2 = inputModel.Field2;
    dbModel.Field3 = inputModel.Field3;
    dbModel.Field4 = inputModel.Field4;

    UpdateModelInDB(dbModel);
}
...