Razor 页面视图在重新显示时呈现原始表单值而不是修改

Razor pages view renders original form value instead of modified when reshown

从 ASP.NET 核心 MVC 转移到 Razor 页面,我对将数据传递到 Razor 视图的理解一定有问题。

这是一个简单的视图:

@page
@model TestModel
@{
    System.Diagnostics.Debug.WriteLine(Model.Name);
}
<form class="form-horizontal" method="get">
    Name: <input type="text" class="form-control" asp-for="Name">
    <button type="submit" class="btn btn-default">Send...</button>
</form>

下面是带有一个事件处理程序的视图模型class:

public class TestModel : PageModel
{
    [BindProperty(SupportsGet = true)]
    public string Name { get; set; } = "";
    public TestModel() {}

    public IActionResult OnGet()
    {
        Name += "N";
        return Page();
    }
}

然后运行项目:

视图不呈现修改后的 Model.Name 值,而是呈现表单数据中的原始值。

如何修正使视图渲染修改后的字符串?

您可以尝试在客户端的OnGet handler.When绑定数据中添加ModelState.Clear();,它会在模型​​之前从ModelState获取值。

public class TestModel : PageModel
{
    [BindProperty(SupportsGet = true)]
    public string Name { get; set; } = "";
    public TestModel() {}

    public IActionResult OnGet()
    {
        Name += "N";
        ModelState.Clear();
        return Page();
    }
}