0
將我的ApplicationUser放入viewmodel之後,我無法更新它。如果我直接傳遞ApplicationUser,它會更新得很好。從複雜的viewmodel更新實體?
我的視圖模型是這樣的:
public class EditViewModel
{
public List<ApplicationUser> users;
public ApplicationUser user;
public CSGOAccount CSGOAccount;
}
在我的表單中我然後調用user.Property我的所有屬性,就像這樣:
<div class="form-group">
<label asp-for="user.FirstName" class="control-label"></label>
<input asp-for="user.FirstName" class="form-control" />
<span asp-validation-for="user.FirstName" class="text-danger"></span>
</div>
這是我覺得事情錯了但我不確定爲什麼。我有一個理論,沒有值永遠不會傳遞到模型中,因此沒有什麼更新,因爲我TryUpdateModel返回true,沒有異常被捕獲:
[HttpPost, ActionName("EditCoach")]
[ValidateAntiForgeryToken]
public async Task<IActionResult> EditCoachInfo(string id)
{
if (id == null)
{
return NotFound();
}
var userToUpdate = await _context.Users
.Include(i => i.Coach)
.SingleOrDefaultAsync(i => i.Id == id);
if (await TryUpdateModelAsync<ApplicationUser>(
userToUpdate,
"",
i => i.FirstName, i => i.LastName, i => i.Email, i => i.UserName, i => i.EmailConfirmed, i => i.PhoneNumber, i => i.PhoneNumberConfirmed, i => i.LockoutEnd, i => i.LockoutEnabled, i => i.AccessFailedCount, i => i.Coach))
if (userToUpdate.Coach != null)
{
try
{
await _context.SaveChangesAsync();
TempData["EditStatus"] = "Profilen blev opdateret";
}
catch (DbUpdateException /* ex */)
{
//Log the error (uncomment ex variable name and write a log.)
TempData["EditStatus"] = "Fejl - Ikke i stand til at gemme ændringer. " +
"Prøv igen, eller kontakt din system adminstrator hvis problemet" +
"er vedvarende";
}
}
EditViewModel model = new EditViewModel()
{
user = userToUpdate,
};
return View(model);
}
我所需要的複雜的視圖模型,因爲我有使用部分意見一個不同的模型。我如何更新我的用戶?
不幸的是,它並沒有解決問題。任何其他想法? –