在一个非常基本的默认项目中,我尝试在管理控制器中为applicationuser添加编辑视图。这是我的控制器方法:
// GET: /Manage/Edit/1
public async Task<ActionResult> Edit()
{
var user = await UserManager.FindByIdAsync(User.Identity.GetUserId());
if (user == null)
{
return HttpNotFound();
}
return View(user);
}
// POST: /Manage/Edit/5
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Edit([Bind(Include = "Email,Id,FirstName,LastName,Phone,Company,Description,Website")] ApplicationUser formuser, string id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
var user = await UserManager.FindByIdAsync(id);
user.Email = formuser.Email;
user.FirstName = formuser.FirstName;
user.LastName = formuser.LastName;
user.Phone = formuser.Phone;
user.Company = formuser.Company;
user.Description = formuser.Description;
user.Website = formuser.Website;
if (ModelState.IsValid)
{
//Update the user details
await UserManager.UpdateAsync(user);
return RedirectToAction("Edit");
}
else
{
return View();
}
}
我的观点是使用applicationuser模型,我相信我已正确扩展了applicationuser(只添加了几个字段)。但是,当我提交表单时,我得到一个很少详细的错误请求,但我认为我的id为null并且它正在进行空检查。我在另一个项目中使用了几乎相同的代码,但我不能发现任何不同之处。
我认为这是足够的信息,但我真的不明白这里发生了什么。
答案 0 :(得分:0)
,使用
@Html.HiddenFor(model.ID)
它可能没有保存,因为您正在初始化除了id之外的所有其他绑定。
尝试
user.Id = formuser.Id;