ASP.NET Core 2.1 MVC中的部分属性绑定/发布

问题描述 投票:0回答:1

我有一个有10个属性的模型。此信息存储在具有10个字段的数据库表中。假设每个属性都与表列匹配。

我有一个使用此模型的View。此视图仅使用10个属性中的4个属性。用户将仅编辑这4个属性。当我把它发回来。我仅为这4个属性获取值,因为这些是绑定到View的唯一字段。所有其他属性都为null。我没有使用任何HTML隐藏标签来绑定其他属性。因此[HttpPost] ControllerAction中的其他属性为null。

我的问题是,

有没有一种简单的方法可以识别这10个属性中哪4个属性绑定到View,这些是我需要在数据库中更新的唯一属性。

换句话说,“ModelState”是否知道视图中绑定了哪些属性?或者是否有其他类会告诉我哪些字段绑定到“View”,以便我可以编写代码来仅更新数据库中的那些字段。

c# asp.net-mvc model-view-controller model-binding asp.net-core-2.1
1个回答
0
投票

您可以尝试不同的方法来执行此操作:

从视图中发布这4个属性以更新模型时,请使用模型的标识符字段从数据库中获取数据。从db返回的此模型将包含所有10个字段的信息,您可以将4个字段更新为此模型。然后将此更新的模型传递给db for update操作。

像这样的东西:

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);
}
© www.soinside.com 2019 - 2024. All rights reserved.