所以我正在学习这个关于ASP.NET Core和EF 6的微软教程,它刚刚通过编辑控制器更新了一个模型。
我所知道的:
-
- 运行调试器,在函数执行之前
因此,我理解
有一段代码让我感到很困惑,我想象(也许希望)这对许多人来说并不困惑。
var studentToUpdate = await _context.Students.SingleOrDefaultAsync(s => s.ID == id);
if (await TryUpdateModelAsync<Student>(
studentToUpdate,
"",
s => s.FirstMidName, s => s.LastName, s => s.EnrollmentDate))
// goes on to save the context
因此,这个控制器只需要一个int id
作为参数,这就是它如何掌握studentToUpdate
的方式。我不完全熟悉的是,它从哪里获取更新值?我所知道的:
-
TryUpdateModelAsync<Student>
- 第一个参数:要更新的模型
- 第二个参数:前缀(?),引用中的前缀:在.中查找值时使用的前缀
- 第三个参数:我认为与我正在寻找的解决方案有关的linq语句。- 运行调试器,在函数执行之前
studentToUpdate.FirstMidNames
是Carson
(原始),但在函数执行之后,它变成了Carsey
(新的)。字符串Carsey
始终在this>Request>Form>Results View中(其中包含表单中所有值的列表)。因此,我理解
TryUpdateModelAsync
函数以某种方式使用linq语句和表单结果来获取studentToUpdate
的新值,但我真的不知道它是如何做到的和在哪里完成的?