Entity framework core c#仅在具有实体框架核心的view with razor页面上使用输入更新值

Entity framework core c#仅在具有实体框架核心的view with razor页面上使用输入更新值,entity-framework-core,razor-pages,Entity Framework Core,Razor Pages,我正在使用razor页面和EF CORE,从数据库中检索值,并将它们放在视图中,如下所示 <input asp-for="theModel.theValue1" class="form-control" /> 到目前为止,这是由文档提供的。我在模型中有另一个名为value2的值,它在提交此视图时保持不变。如果我使用 _context.Attach(theModel).State = EntityState.Modified; await _context.SaveChangesAs

我正在使用razor页面和EF CORE,从数据库中检索值,并将它们放在视图中,如下所示

<input asp-for="theModel.theValue1" class="form-control" />
到目前为止,这是由文档提供的。我在模型中有另一个名为
value2
的值,它在提交此视图时保持不变。如果我使用

_context.Attach(theModel).State = EntityState.Modified;
await _context.SaveChangesAsync();
然后
model.value2
为空,因为我在视图本身上没有相应的输入,这与无状态状态下的情况相同

是在编辑之间保留值的唯一方法,以便为模型中的每个属性在视图上放置隐藏输入,如下所示

<input type="hidden" asp-for="theModel.theValue2" />


或者有没有更优雅的说法“只更新
模型。值1
”或“不更新
模型。值2
”?

这是在回发之间传输数据的唯一方法,但并不安全。web应用程序的访问者很容易更改隐藏输入的值


当用户发布数据时,我通常会再次读取数据库中的数据,并为从数据库中检索到的实体设置新值(对于您的情况,您将设置Model属性的值),然后将修改后的实体保存回数据库。

现在我的电脑上没有,但我很确定您可以这样做

_context.Entry(theModel).Property(t => t.theValue2).IsModified = false;
在调用save之前

_context.Entry(theModel).Property(t => t.theValue2).IsModified = false;