如何在 Razor 页面中检测回发?

问题描述 投票:0回答:2

我正在使用具有

form
@functions{}
部分的单个剃刀页面 (cshtml) 来捕获
OnPost()
。所有这些都很好用。

在 HTML 部分,我需要知道何时发生回发并显示一条消息。我不确定 Razor 页面中的位置或方式。我已经尝试过

IsPost
但不可用。

我在类中创建了一个字符串属性,并在

OnPost
中为其设置了一个值,但是一旦进入视图,该属性就是
null

我给

ViewData["mystring"]
分配了一个值,但一旦进入视图,它也是空的。

-- 编辑 --
看来问题是我正在尝试在 OnPost 中设置一个属性,这就是请求。 OnPost 之后,OnGet 将始终触发。 OnGet 是响应。我可以看到

POST
中从
GET
this.Request.Method
的翻转。所以我失去了任何发生回发的迹象。

关于如何做到这一点有什么建议吗?

c# asp.net-core-2.0 razor-pages
2个回答
4
投票

您应该使用 Post-Redirect-Get 模式。该消息可以存储在 TempData 中


0
投票

我的页面中有这个。

                @if (@TempData["Message"] != null)
                {
                    <div class="alert alert-success">@TempData["Message"]</div>
                }

这在后面的代码中。

    public IActionResult OnPost(int id)
{
    //Do your twiddling
    
    //if (whatever was successful) then do this
        TempData["Message"] = "Something has been successfully updated";
        return RedirectToPage("./Details", new { id });

    return Page();
}

注意:我正在定向到另一个页面并在那里显示消息,但您可以保留在同一页面上。

我实际上是在 ASP.NET Web Forms 中寻找类似以下内容的内容。

If Not IsPostBack Then
© www.soinside.com 2019 - 2024. All rights reserved.