Выполните удаленную проверку с помощью ядра .NET - PullRequest
0 голосов
/ 03 января 2019

Что-то, что я считал простым, но, по-видимому, нет, по причине, которая в настоящее время неясна для меня.

Я пытаюсь подтвердить адрес электронной почты пользователя, который хочет зарегистрироваться на моем сайте.

Для этого я использую атрибут [Remote], который вызывает метод из другого контроллера и выполняет проверку.

За исключением того, что входной параметр этого метода всегда получает значение NULL, поэтому он не получаетадрес электронной почты, введенный пользователем.

Я увидел, что имя переменной должно совпадать с именем моей модели, и это так (по крайней мере, я так думаю?!).

У вас есть идея?

Модель прямо в RegistrationController

public class InputModel
{
    [Remote("ValidateEmail", "Home", ErrorMessage = "This email his already used.")]
    [Required]
    [EmailAddress]
    [Display(Name = "Email *")]
    public string Email { get; set; }
}



**Home Controller where the method is**



public async Task<IActionResult> ValidateEmail(string Email)
{
    var user = await _userManager.FindByNameAsync(Email);

    bool result;

    if (user.UserName == null)
    {
        result = true;
    }
    else
    {
        result = false;
    }
    return Json(result);
}

Вид

            <div class="form-check-inline col-12">
                <div class="col-4">
                    <label asp-for="Input.Email"></label>
                </div>
                <input asp-for="Input.Email" class="form-control" />
            </div>
            <div style="margin-left:33%">
                <span asp-validation-for="Input.Email" class="text-danger"></span>
            </div>

1 Ответ

0 голосов
/ 04 января 2019

Для remote validation он добавит Input.Email в качестве строки запроса, но вы свяжете параметр с (string Email), который не сможет быть привязан.

Попробуйте явно связать владельца с помощью FromQuery.

public async Task<IActionResult> ValidateEmail([FromQuery(Name = "Input.Email")]string Email)
{
    bool result = false;
    return Json(result);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...