我正在使用具有
form
和 @functions{}
部分的单个剃刀页面 (cshtml) 来捕获 OnPost()
。所有这些都很好用。
在 HTML 部分,我需要知道何时发生回发并显示一条消息。我不确定 Razor 页面中的位置或方式。我已经尝试过
IsPost
但不可用。
我在类中创建了一个字符串属性,并在
OnPost
中为其设置了一个值,但是一旦进入视图,该属性就是 null
。
我给
ViewData["mystring"]
分配了一个值,但一旦进入视图,它也是空的。
-- 编辑 --
看来问题是我正在尝试在 OnPost 中设置一个属性,这就是请求。 OnPost 之后,OnGet 将始终触发。 OnGet 是响应。我可以看到
POST
中从 GET
到 this.Request.Method
的翻转。所以我失去了任何发生回发的迹象。
关于如何做到这一点有什么建议吗?
您应该使用 Post-Redirect-Get 模式。该消息可以存储在 TempData 中
我的页面中有这个。
@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