是否有任何原因将错误消息数组传递给 toastr js.我想使用数组显示多个 toastr 消息

问题描述

有人有什么解决办法吗?

控制器详情

这是在 for 循环中生成多个错误消息的控制器

 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));
});