Viewbag引起ValidationSummary不验证的问题
今天做一个Edit竟然不验证了,怎么都找不到原因,最后才发现
1.在HTTPGET方法中,用Viewbag.xxx读取了一个所有部门表,在视图中用下拉框显示。
2.一定要在POST方法中也写一次,因为也回传不了,导致不能验证。
[HttpGet]
//[Authorize(Roles = "Super")]
[AllowAnonymous]
public ActionResult Edit(string id)
{
if (string.IsNullOrWhiteSpace(id))
{
return new HttpStatusCodeResult(System.Net.HttpStatusCode.BadRequest);
}
///读出所有的部门名称分类,以下拉框的形式写入。
ViewBag.drolistDepart = (db.Departments).Select(g => new SelectListItem
{
Text = g.DepartmentName,
Value = g.Id,
Selected = false
});
ApplicationUser user = UserManager.FindById(id);
if (user == null)
{
return HttpNotFound();
}
///定义一个EditUserViewModel模型
var editUserViewModel = new EditUsers(){
Id = user.Id,
Email = user.Email,
PhoneNumber = user.PhoneNumber,
WX = user.WX,
QQ = user.QQ,
DepartmentId = user.DepartmentId,
Address = user.Address,
UserName = user.UserName,
RealName = user.RealName,
HeaderPic = user.HeaderPic
};
return View(editUserViewModel);
}
/// <summary>
///Edit 的POST方法
/// </summary>
/// <param name="id"></param>
/// <param name="editUserViewModel"></param>
/// <returns></returns>
[HttpPost]
//[Authorize(Roles = "Super")]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Edit(EditUsers editUserViewModel)
{
if (ModelState.IsValid && !string.IsNullOrEmpty(editUserViewModel.Id))
{
///用模型传入的数据,赋值给User 模型
ApplicationUser user = UserManager.FindById(editUserViewModel.Id);
user.Email = editUserViewModel.Email;
user.PhoneNumber = editUserViewModel.PhoneNumber;
user.WX = editUserViewModel.WX;
user.QQ = editUserViewModel.QQ;
user.DepartmentId = editUserViewModel.DepartmentId;
user.Address = editUserViewModel.Address;
user.RealName = editUserViewModel.RealName;
user.HeaderPic = editUserViewModel.HeaderPic;
var result = await UserManager.UpdateAsync(user);
if (result.Succeeded)
{
return RedirectToAction("ListUsers", "Account");
}
AddErrors(result);
}
/////读出所有的部门名称分类,以下拉框的形式写入。
ViewBag.drolistDepart = (db.Departments).Select(g => new SelectListItem
{
Text = g.DepartmentName,
Value = g.Id,
Selected = false
});
return View(editUserViewModel);
}
// <summary>
/// 自己写的密码重置
/// </summary>
/// <param name="code"></param>
/// <returns></returns>
[HttpGet]
//[Authorize(Roles = "Super")]
[AllowAnonymous]
public ActionResult PasswordReset(string id)
{
if (string.IsNullOrWhiteSpace(id))
{
return new HttpStatusCodeResult(System.Net.HttpStatusCode.BadRequest);
}
ApplicationUser user = UserManager.FindById(id);
string code = UserManager.GeneratePasswordResetToken(id);
if (user == null)
{
return HttpNotFound();
}
var resetPasswordViewModel = new PasswordRrestModel()
{
RealName = user.RealName,
Password = user.PasswordHash,
Code = code
};
return View(resetPasswordViewModel);
}
浙公网安备 33010602011771号