问题描述
有人有什么解决办法吗?
控制器详情
public async Task<IActionResult> Register(Registerviewmodel model)
{
var result = await userManager.CreateAsync(user,model.Password);
if (result.Succeeded)
{
var token = await userManager.GenerateEmailConfirmationTokenAsync(user);
var confirmationLink = Url.Action("ConfirmEmail","AccountRoles",new { userId = user.Id,token = token },Request.Scheme);
}
foreach (var error in result.Errors)
{
TempData["msg"] = error.Description;
}
return View(model);
}
js
$(document).ready(function () {
var a = '@TempData["msg"]';
if (a != '')
toastr.error(a)
})
解决方法
控制器方法中的 for 循环不会生成错误消息数组。
行 TempData["msg"] = error.Description
在循环中重复,这意味着在您的 javascript 调用 @TempData["msg"]
将导致仅检索最后一条错误消息。
您需要生成错误消息列表,然后将它们存储在 TempData 中。
TempData["msg"] = result.Errors.Select(x => x.Description).ToList();
然后在 javascript 中,您遍历结果数组并为每个数组显示一条错误消息。
$(document).ready(function () {
var errors = @Html.Raw(Json.Serialize(TempData["msg"]));
errors.forEach(x => toastr.error(x));
});