【发布时间】:2017-08-17 19:37:24
【问题描述】:
我有一个用于编辑我的用户信息的表单:
<form asp-action="EditUser" asp-route-returnurl="@ViewData["ReturnUrl"]">
<div class="form-horizontal">
<hr />
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<input type="hidden" asp-for="User.Id" />
<div class="form-group">
<label asp-for="User.Name" class="col-md-2 control-label"></label>
<div class="col-md-10">
<input asp-for="User.Name" class="form-control" />
<span asp-validation-for="User.Name" class="text-danger"></span>
</div>
</div>
<div class="form-group">
<label asp-for="User.Surname" class="col-md-2 control-label"></label>
<div class="col-md-10">
<input asp-for="User.Surname" class="form-control" />
<span asp-validation-for="User.Surname" class="text-danger"></span>
</div>
</div>
</div>
</form>
这是我的 MVC 操作:
[HttpPost, ActionName("EditUser")]
[Authorize(Roles = Roles.Root + "," + Roles.Manager)]
public async Task<IActionResult> Edit(string id, string returnUrl = null)
{
if (ModelState.IsValid)
{
try
{
var studentToUpdate = await _dbContext.Users.SingleOrDefaultAsync(s => s.Id == id);
// Try to update user from DB by edited values from form
if (await TryUpdateModelAsync<ApplicationUser>(studentToUpdate, "User.",
s => s.Surname, u => u.Name))
_dbContext.SaveChanges();
return Redirect(returnUrl);
}
}
}
在调试中我可以看到Request.Form 属性中有新的正确值,但数据库实体没有更新。我该如何解决?
【问题讨论】:
-
你的断点是否命中了行 =>
_dbContext.SaveChanges();? -
我不知道 asp.core 与 mvc 有何不同,但您的操作不应该期望其参数中包含
User变量吗? -
编辑只需要一个 await reekeeS。
标签: c# asp.net-mvc asp.net-core http-post