ArgumentNullException :值不能为空。参数名称:viewData

Nen*_*eno 9 razor asp.net-core-mvc

我有这样的简单登录页面:

登录.cshtml

@page
@model GDPR.Views.Account.LoginModel
@{
}

@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers


<html>
<body>
    <p>Login </p>
    <form method="post">
        <div asp-validation-summary="All"></div>
        Username: <input asp-for="loginData.Username" value="username" /><br />
        Password: <input asp-for="loginData.Password" value="password" /><br />
        <br />
        <input type="submit" value="Login" />
        @Html.AntiForgeryToken()
    </form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

和后面的代码:

public class LoginModel : PageModel
{
    [BindProperty] // Bind on Post
    public LoginData loginData { get; set; }

    public async Task<IActionResult> OnPostAsync()
    {
        if (ModelState.IsValid)
        {
          .......
            await HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, principal);
            return RedirectToPage("/Home/Index");
        }
        else
        {
            ModelState.AddModelError("", "username or password is blank");
            return Page();
        }
    }


    public class LoginData
    {
        [Required]
        public string Username { get; set; }

        [Required, DataType(DataType.Password)]
        public string Password { get; set; }
    }
}
Run Code Online (Sandbox Code Playgroud)

当我运行应用程序时,出现错误:ArgumentNullException 值不能为空,参数名称:viewData。

在此处输入图片说明

该错误的原因可能是什么?

小智 17

第一行的@page 为空,这就是导致错误的原因。删除@page 语句或使用它来定义要显示的页面。