Значение привязки EditForm .net 8 не работает на странице входаC#

Место общения программистов C#
Ответить
Anonymous
 Значение привязки EditForm .net 8 не работает на странице входа

Сообщение Anonymous »

это мое приложение.razor:

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








@code {
[CascadingParameter]
private HttpContext HttpContext { get; set; } = default!;

private IComponentRenderMode? RenderModeForPage => HttpContext.Request.Path.StartsWithSegments("/Account") ? null : InteractiveServer;
}
А это моя страница входа:

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

@page "/Account/Login"

@inject SignInManager SignInManager
@inject ILogger Logger
@inject NavigationManager NavigationManager

Se connecter

Se connecter

@if (errorMessage != null)
{
@errorMessage
}









@if (InProgress)
{

}
else
{
Se connecter
}





@code {
private string? errorMessage = null;
private bool InProgress = false;

[CascadingParameter]
private HttpContext HttpContext { get; set; } = default!;

private InputModel Input { get; set; } = new();

protected override async Task OnInitializedAsync()
{
if (HttpMethods.IsGet(HttpContext.Request.Method))
{
// Clear the existing external cookie to ensure a clean login process
await HttpContext.SignOutAsync(IdentityConstants.ExternalScheme);
}
}

public async Task LogInUser()
{
InProgress = true;
// This doesn't count login failures towards account lockout
// To enable password failures to trigger account lockout, set lockoutOnFailure: true
var result = await SignInManager.PasswordSignInAsync(Input.Email, Input.Password, true, lockoutOnFailure: true);
if (result.Succeeded)
{
Logger.LogInformation("L'utilisateur est connecté.");
NavigationManager.NavigateTo("/Home");
}
else if (result.IsLockedOut)
{
Logger.LogWarning("Le compte a été bloqué.");
errorMessage = "Le compte a été bloqué.";
}
else
{
errorMessage = "Erreur: tentative de connexion invalide.";
}
InProgress = false;
}

private sealed class InputModel
{
[Required(ErrorMessage = "Le courriel ne doit pas être vide.")]
[EmailAddress(ErrorMessage = "Ceci n'est pas une adresse courriel valide.")]
public string Email { get; set; } = "";

[Required(ErrorMessage = "Le mot de passe ne doit pas être vide.")]
[DataType(DataType.Password)]
public string Password { get; set; } = "";
}
}
Поэтому, когда я заполняю поле, строка модели ввода по-прежнему пуста. Я не могу включить интерактивный режим для рендеринга, потому что HttpContext тогда не работает. Знаете, что я могу сделать?
Так может быть, есть режим рендеринга, о котором я не знаю, или что-то, что я пропустил?

Подробнее здесь: https://stackoverflow.com/questions/784 ... login-page
Ответить

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

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

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

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

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