ASP.NET Привязка модели страницы Razor не работает

#c# #asp.net-core #asp.net-core-razor-pages

#c# #asp.net-core #asp.net-core-razor-pages

Вопрос:

У меня есть следующая форма на странице razor:

 <form method="post">
    <table>
        <tr>
            <td style="padding-bottom: 10px;" class="login-entry">User Name</td>
            <td style="padding-bottom: 10px;"><input type="text" asp-for="LoginName" class="logins" autocomplete="off" /></td>
        </tr>
        <tr>
            <td style="padding-bottom: 10px;" class="login-entry">Password</td>
            <td style="padding-bottom: 10px;"><input type="password" asp-for="Password" class="logins" /></td>
        </tr>
        <tr>
            <td colspan="2" style="text-align:right;"><input type="submit" value="login" /></td>
        </tr>
    </table>
</form>
 

Затем в моей PageModel у меня есть два свойства и OnPostAsync:

 public string LoginName { get; set; }

 public string Password { get; set; }

 public async Task<IActionResult> OnPostAsync()
{
    // Login code here
}
 

Проблема в том, что когда я отлаживаю страницу, ввожу имя пользователя и пароль и нажимаю войти, внутри метода OnPostAsync свойства LoginName и Password равны нулю.

У кого-нибудь есть идеи о том, почему это не работает? Или, поскольку я новичок в Razor pages, по крайней мере, способ отслеживания подобных вещей, когда они не работают? Любая помощь будет высоко оценена.

Ответ №1:

Вы можете добавить этот атрибут [BindProperty] следующим образом:

     [BindProperty]
    public string LoginName { get; set; }
    [BindProperty]
    public string Password { get; set; }

    public async Task<IActionResult> OnPostAsync()
    {
        // Login code here
    }
 

Результат:
введите описание изображения здесь

Комментарии:

1. Спасибо за ответ!