asp.net 核心中的甜蜜警报确认对话框
Sweet alert confirmation dialog in asp.net core
我是 asp.net 核心中使用 sweet alert 的新手。在这里,当我想提交一个在添加记录后将数据存储在数据库中的表单时,我想显示一个带有甜蜜警报的确认警报。这是我的控制器代码:
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 条件中查看 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 时,您没有 return View,因此 ViewBag 值始终为 false,并且永远不会呈现该部分。
第二个问题:sweet alert 的工作取决于ViewBag 条件,所以这里你不应该在表单提交事件中这样做。相反,您需要在页面加载功能中执行此操作。
像下面这样更改您的代码:
控制器:
[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>
}
}
我是 asp.net 核心中使用 sweet alert 的新手。在这里,当我想提交一个在添加记录后将数据存储在数据库中的表单时,我想显示一个带有甜蜜警报的确认警报。这是我的控制器代码:
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 条件中查看 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 时,您没有 return View,因此 ViewBag 值始终为 false,并且永远不会呈现该部分。
第二个问题:sweet alert 的工作取决于ViewBag 条件,所以这里你不应该在表单提交事件中这样做。相反,您需要在页面加载功能中执行此操作。
像下面这样更改您的代码:
控制器:
[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>
}
}