问题描述
我是在 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>
}
}