TryUpdateModelAsync调用异常:识别模型却无法读取属性求助
解决TryUpdateModelAsync中属性找不到的编译错误
兄弟,我一眼就揪出问题所在了——这就是个大小写拼写错误,还附带个小语法问题,咱们一步步捋清楚:
先看你代码里的两处关键细节:
- 你给实体属性赋值时写的是:
Answer.AnswerTimestamp = DateTime.Now;——这里的属性名是AnswerTimestamp(注意是Timestamp,小写的s) - 但在
TryUpdateModelAsync的参数里,你写成了p.AnswerTimeStamp——这里把Timestamp拆成了TimeStamp(大写的S),你的Answer实体类根本没有这个拼写的属性,所以IntelliSense自然报错找不到。
另外,你代码里的p.SelectedAnswer还少了=>,这也是语法错误,得一起修正。
修正后的代码应该是这样:
// 保存更改 await TryUpdateModelAsync( Answer, "Answer", p => p.AnswerTimestamp, p => p.SelectedAnswer); // 保存更改 await dbContext.SaveChangesAsync();
至于你说另一个页面相同逻辑能正常运行,那大概率是另一个页面的模型属性名就是AnswerTimeStamp(大写S),或者你在那边刚好写对了拼写。
最后给你两个排查小技巧:
- 直接去看
Answer实体类的定义,确认属性名的大小写和拼写,别光依赖IDE提示; - 当IDE识别到类型但不出属性提示时,优先检查自己的拼写——十有八九是打错字了。
内容的提问来源于stack exchange,提问作者S-Vuk
相关产品推荐
相关产品推荐

