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

时间:2018-08-22 22:43:33

标签: asp.net-core razor-pages

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

如何在Razor页面上实现上述目标?以任何代码段为例将很有帮助。谢谢

1 个答案:

答案 0 :(得分:3)

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

下面是一个示例,该示例在POST期间使用TempData存储消息,然后重定向到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。