asp.net core 中的甜蜜警报确认对话框

问题描述

我是在 asp.net 核心中使用甜蜜警报的新手。在这里,当我想在添加记录后提交将数据存储在数据库中的表单时,我想显示带有甜蜜警报的确认警报。这是我的控制器代码

 public async Task<IActionResult> RequestJob()
    {
        ViewBag.Result = false;
        return View();
    }
    [HttpPost]
    public async Task<IActionResult> RequestJob(Resumeviewmodel viewmodel)
    {
        if (ModelState.IsValid)
        {
                Resume resume = new Resume()
                {
                    Name = viewmodel.Name,LastName = viewmodel.LastName,Age = viewmodel.Age,Mobile = viewmodel.Mobile,Mail = viewmodel.Mail,};
                await _temp.AddResume(resume);
                ViewBag.Result = true;
                ModelState.Clear();
            }
        }

        ViewBag.Result = false;
        return View(viewmodel);
    }

这是我的 ViewBag Condition 中的 Sweet alert 代码

@if (ViewBag.Result)
    {
      @section mySection{
             <script>
              $("#submition").on('click',(function () {
                swal({
                title: "Message",text: "Your message has been sent successfully",type: 'success',showCancelButton: false,allowOutsideClick: false,confirmButtonColor: "green",confirmButtonText: "Ok"
            }).then(func1tion () {
                window.location.reload(true);
            });

        }));

    </script>
  }}

但是当我提交表单时,虽然表单正确提交了信息,但甜蜜的警报不起作用。请优化我的代码,以便甜蜜警报工作,我不知道为什么甜蜜警报在我的 ViewBag 条件下不起作用?!

解决方法

您的代码中有两个问题。

第一个是@kordiseps 提到的。当 ModelState.IsVaild 为 true 时,您没有返回 View,因此 ViewBag 值始终为 false,并且永远不会呈现该部分。

第二个问题:sweet alert的工作依赖于ViewBag的条件,所以这里不要在form submit事件中进行。相反,您需要在页面加载功能中进行。

更改您的代码,如下所示:

控制器:

[HttpPost]
public async Task<IActionResult> RequestJob(ResumeViewModel viewModel)
{
    if (ModelState.IsValid)
    {
        Resume resume = new Resume()
        {
            Name = viewModel.Name,LastName = viewModel.LastName,Age = viewModel.Age,Mobile = viewModel.Mobile,Mail = viewModel.Mail,};
        await _temp.AddResume(resume);
        ViewBag.Result = true;
        ModelState.Clear();
        return View(viewModel);
    }

    ViewBag.Result = false;
    return View(viewModel);
}

查看:

@if (ViewBag.Result)
{
    @section mySection{
        <script>
            $(function () {
                swal({
                    title: "Message",text: "Your message has been sent successfully",type: 'success',showCancelButton: false,allowOutsideClick: false,confirmButtonColor: "green",confirmButtonText: "Ok"
                }).then(function () {
                });
            })
        </script>
    }
}