如何在ASP.NET Core Razor中从PageModel显示警报消息

hrirmatl  于 2022-11-26  发布在  .NET
关注(0)|答案(2)|浏览(225)

我是ASP.NET核心的新手。我想在PageModel中引发异常时向客户端显示警告消息。完成此任务的最佳方法是什么?

vddsk6oq

vddsk6oq1#

假设您有一个PageModel类,其中声明了一个如下所示的变量

public class CustomerEditModel() : PageModel
{
    [TempData]
    public string StatusMessage {get;set;}
    .....
}

在该类中,Post方法发现自己处于某种类型的异常条件中

public async Task<IActionResult> OnPostAsync()
{
     ....
     catch(Exception ex)
     {
        _logger.LogError(ex, "Exception in post");
        StatusMessage = "An error occurred while saving customer data!";
        return Page();
     }
}

现在,在匹配的RazorPage中,您有一个链接到上面的StatusMessage属性的隐藏字段

<div class="d-none">
   <input asp-for="StatusMessage"/>
</div>

最后,添加一个使用JQuery和SweetAlert显示消息框的JavaScript块

@section Scripts {
<script> src="https://cdn.jsdelivr.net/npm/sweetalert2@11.1.7/dist/sweetalert2.all.min.js"></script>

<script>
   $(document).ready(function () {
      let msg = $('#StatusMessage').val();
      if(msg.length > 0) {
          swal.fire(msg);
      }
   }
</script>
mctunoxg

mctunoxg2#

您可以使用引导程序警告消息。在共享〉布局.cshtml添加。

<div class="container">
    <main role="main" class="pb-3">
        @if (TempData[Constants.AlertSuccess] != null)
        {
            <div class="alert alert-success" role="alert">
            @Html.Raw(@TempData[Constants.AlertSuccess])
            </div>
        }
        @if (TempData[Constants.AlertDanger] != null)
        {
            <div class="alert alert-danger" role="alert">
            @Html.Raw(@TempData[Constants.AlertDanger])
            </div>
        }
        @if (TempData[Constants.AlertWarning] != null)
        {
            <div class="alert alert-warning" role="alert">
            @Html.Raw(@TempData[Constants.AlertWarning])
            </div>
        }
        @RenderBody()
    </main>
</div>

在这个方向上,它将对每一页都有效。否则,将@if语句放在您选择的页面中。
类常量

public static readonly string AlertSuccess = "AlertSuccess";
public static readonly string AlertDanger = "AlertDanger";
public static readonly string AlertWarning = "AlertWarning";

或者将它们的值直接写入TempData。例如在OnPost()中

TempData[Constants.AlertWarning] = "Hello World"
TempData["AlertSuccess"] = "Success<br/>It is good."
TempData["AlertDanger"] = "Danger<br/>It is bad."

向用户显示警告/错误/成功消息。

相关问题