首页 > 解决方案 > 在 aspnet core Razor 页面中验证失败时重新填充表单数据

问题描述

提前感谢您的帮助

我正在使用 aspnet core 2.1 razor pages。当验证失败或 ModelState 无效时,我需要重新填充表单数据。在 MVC 中,我们可以使用return View(model),但是如何在 aspnet core 2.1 razor 页面中做到这一点。

我试过return Page()了,但这会触发服务器端验证,但不会重新填充表单中的数据

需要帮忙...

标签: c#asp.net-corerazor-pages

解决方案


如果您自动重新填充表单值

  1. 使用[BindProperty]相关 PageModel 属性上的属性,
  2. 使用输入标签助手asp-for中的属性在UI(Razor 内容页面)中建立双向绑定
  3. return Page()如果发生这种情况,请致电ModelState.IsValid == false

以下是证明这一点所需的最少步骤:

表单:

<form method="post">
<input asp-for="FirstName"/><span asp-validation-for="FirstName"></span><br />
    <input type="submit" />
</form>

和一个 PageModel:

public class FormValidationModel : PageModel
{
    [BindProperty, StringLength(5)]
    public string FirstName { get; set; }

    public IActionResult OnPost()
    {
        if (!ModelState.IsValid)
        {
            return Page();
        }
        return RedirectToPage("index");
    }
}

推荐阅读