Проблема с значением привязки, объект не может быть созданC#

Место общения программистов C#
Ответить
Anonymous
 Проблема с значением привязки, объект не может быть создан

Сообщение Anonymous »

Я работаю над приложением Blazor, и у меня возникли проблемы с формой входа. Объект LoginModel всегда пуст, когда он передается моему методу HandleLogin, что приводит к сбою процесса входа в систему. Кроме того, я столкнулся со следующей ошибкой:

Код: Выделить всё

Severity    Code    Description    Project    File    Line    Suppression State
Error (active)    RZ9991    The attribute names could not be inferred from bind attribute 'bind-Value'. Bind attributes should be of the form 'bind' or 'bind-value' along with their corresponding optional parameters like 'bind-value:event', 'bind:format' etc.
Вот соответствующая часть моего кода:

Код: Выделить всё

`
@page "/login"
@layout BTDMiddleware___Frontend.Components.Layout.LoginLayout
@inject BTDMiddleware___Frontend.Components.AuthService AuthService
@inject NavigationManager Navigation
@inject HttpClient HttpClient
@using BTDMiddleware___Frontend.Components.Modals
@using BTDMiddleware___Frontend.Components.Model


/* Styling code omitted for brevity */



Welcome Page
Sign in to continue access
Server URI: @serverUri
HttpClient Base Address: @httpClientBaseAddress


Sign In

[url=#]Sign In with Azure[/url]


OR






Username:


Password:


Continue


Or Sign Up Using
[url=/signup]SIGN UP[/url]







@code {
private LoginModel loginModel = new LoginModel();
private bool showErrorModal = false;
private string errorMessage = string.Empty;
private string serverUri;
private string httpClientBaseAddress;

protected override void OnInitialized()
{
serverUri = Navigation.BaseUri;
httpClientBaseAddress = HttpClient.BaseAddress?.ToString() ?? "No base address set";
Console.WriteLine($"Server URI: {serverUri}");
Console.WriteLine($"HttpClient Base Address: {httpClientBaseAddress}");
}

private async Task HandleLogin()
{
Console.WriteLine("HandleLogin method called");
Console.WriteLine($"Attempting login with Username: {loginModel.Username}, Password: {loginModel.Password}");
Console.WriteLine($"Server URI: {serverUri}");
Console.WriteLine($"HttpClient Base Address: {httpClientBaseAddress}");

try
{
var response = await AuthService.Login(loginModel);
Console.WriteLine($"Login request sent.  Status Code: {response.StatusCode}");

if (response.IsSuccessStatusCode)
{
if (await AuthService.IsAuthenticated())
{
Navigation.NavigateTo("/");
}
else
{
errorMessage = "Invalid username or password.";
showErrorModal = true;
}
}
else
{
var content = await response.Content.ReadAsStringAsync();
Console.WriteLine($"Login request failed. Status Code: {response.StatusCode}, Reason: {content}");
errorMessage = "An error occurred during login. Please try again.";
showErrorModal = true;
}
}
catch (Exception ex)
{
Console.WriteLine($"Exception occurred during login: {ex.Message}");
errorMessage = "An error occurred during login. Please try again.";
showErrorModal = true;
}
}

private async Task OnShowChanged(bool value)
{
showErrorModal = value;
await Task.CompletedTask;
}
}
`
В моем методе HandleLogin loginModel.Username и loginModel.Password всегда имеют значение null или пустое, хотя я правильно связал их в форме с помощью @bind-Value.Что может быть причиной того, что объект LoginModel становится пустым при отправке формы и как устранить эту проблему? Кроме того, как устранить ошибку RZ9991, связанную с атрибутом @bind-Value?
Дополнительная информация:
  • Я Я использую Blazor Server.
  • Форма входа отображается правильно и не показывает никаких ошибок проверки.
  • Метод HandleLogin запускается, как и ожидалось, когда форма отправлена.
  • Буду очень признателен за любую помощь!
Я изменил страницу входа в Blazor для обработки формируйте входные значения, используя локальные переменные вместо прямой привязки модели входа. Цель заключалась в том, чтобы избежать проблем с привязкой путем создания объекта loginModel вручную во время отправки формы.
**Что я пробовал:
**
  • Удалена привязка loginModel к полям ввода.
  • Введены локальные переменные имя пользователя и пароль для хранения входных значений.
    < li>Обновлен метод HandleLogin для создания и заполнения объекта loginModel этими локальными переменными во время отправки формы.
**Ожидаемый результат:
* *Я ожидал, что форма будет принимать введенные пользователем имя пользователя и пароль, сохранять эти значения в локальных переменных, а затем использовать эти значения для создания объекта loginModel во время отправки формы. Этот объект будет использоваться для отправки запроса на вход на сервер.
**Фактический результат:
**Форма успешно приняла и сохранила входные значения в локальных переменных. Во время отправки формы модель входа в систему была правильно создана и заполнена этими значениями, а запрос на вход был отправлен, как и ожидалось, без каких-либо проблем с привязкой.

Подробнее здесь: https://stackoverflow.com/questions/788 ... be-created
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»