c# - TryUpdateModelAsync 修改后的值
问题描述
我用这样的模型绑定更新我的数据库:
var adminUpdate = await _context.Admins.FindAsync(Id);
if (!String.IsNullOrEmpty(Password)) {
if (Password != PasswordCheck) {
ModelState.AddModelError("Password", "Passwords do not match");
} else {
byte[] data = Encoding.UTF8.GetBytes(Password + Configuration["SomeLocation:SomeKey"]);
data = SHA512.Create().ComputeHash(data);
password = Convert.ToBase64String(data);
}
} else {
password = adminUpdate.Password;
}
if (!ModelState.IsValid) {
return Page();
}
if (await TryUpdateModelAsync(
adminUpdate,
"",
a => a.FirstName,
a => a.LastName,
a => a.Email,
a => a.Password, // must be the value of "password"
a => a.Status,
a => a.CompanyId
))
{
await _context.SaveChangesAsync();
return Redirect("/admin");
}
我的问题是,我需要在数据库密码字段中插入“密码”变量而不是 a.Password。
我怎样才能做到这一点?
解决方案
在您的示例中,调用TryUpdateModelAsync
最终会adminUpdate
根据ModelState
. 如果您想为 设置另一个值Password
,您可以在调用 之后执行此操作TryUpdateModelAsync
,如下所示:
if (await TryUpdateModelAsync(
adminUpdate,
"",
a => a.FirstName,
a => a.LastName,
a => a.Email,
a => a.Status,
a => a.CompanyId
))
{
adminUpdate.Password = password;
await _context.SaveChangesAsync();
return Redirect("/admin");
}
在上面的示例中,我还a => a.Password
从 中删除了它,TryUpdateModelAsync
因为它现在是多余的 - 在调用SaveChangesAsync
.
推荐阅读
- python - Python Pandas 从每天开始的时差
- php - 过时的 WordPress 主题选项;jQuery 错误
- html - 对齐字体真棒图标和段落
- python - 无论如何要在过去 24 小时内修改文件而不遍历目录中的所有文件
- algorithm - 仍在研究这个问题并且不知道这个解释甚至意味着什么
- graphics - 了解 Vulkan 概念:交换链、帧缓冲区
- java - 不要在 ViewPager2 中保存片段状态
- javascript - 使用office.js获取excel工作簿的xml
- java - 为什么我的窗口左角有一个奇怪的白色矩形?
- css - SVG textLength 在文本前添加间距