如何在 .net Core 2.1 RazorPages 中创建确认消息?

How do you create a confirmation message in .net Core 2.1 RazorPages?

希望这不是一个愚蠢的问题 - 我正在将一个应用程序从 .net core mvc 重写到 .net core Razor。在 MVC 中,我使用 viewbags 创建和显示操作成功的确认信息,否则显示错误消息。 .net core 2.1 中的 Razor 页面似乎没有以相同的方式使用或提供 Viewbags。

如何在 Razor 页面中实现上述功能?作为示例的任何代码片段都会有所帮助。谢谢

我们可以使用 Post-Redirect-Get 模式在操作后显示消息。

这里是一个使用 TempData 在 POST 期间存储消息然后重定向到 GET 的示例。使用 TempData 存储消息特别适合重定向,因为数据仅在有人读取它之前存在。

SomePage.cshtml

@page
@model SomePageModel

@if(TempData[SomePageModel.MessageKey] is string message) 
{
    <p>@message</p>
} 

<form method="POST">
    <button type="submit">POST!</button>
</form>

SomePage.cshtml.cs

using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;

namespace temp.Pages
{
    public class SomePageModel : PageModel
    {
        public const string MessageKey = nameof(MessageKey);

        public void OnGet() { }

        public IActionResult OnPost() {
            TempData[MessageKey] = "POST Success!";
            return RedirectToAction(Request.Path); // redirect to the GET
        }
    }
}

此模式也适用于 HTTP 方法,例如 PUT 和 DELETE。只需替换任何其他 HTTP 动词;例如,我们可以执行 Put-Redirect-Get。