Проверка доступности имени пользователя ASP.NET MVC

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

Я использую jQuery и хочу узнать, выполнено ли имя пользователя "mark" или нет, я еще не достиг ссылки на базу данных.

[HTML]

<input id="user_name" name="user_name" onchange="UserCheck()" type="text" value="" />
<div id="status" />

[JS]

function UserCheck() {
    $("#status").html("Checking....");
    $.post("/user/check",
    { username: $("#user_name").val() },
    function (data) {
        if (data == 0) {
            $("#status").html("Available");
        }
        else {
            $("#status").html("Taken");
        }
    });
}


[Controller]

public JsonResult check(FormCollection form)
{
    System.Threading.Thread.Sleep(3000);
    string name = form["username"];

    if (name.Equals("mark")){
        return Json(1);
    } else {
        return Json(0);
    }
}

Ответ 1

Проверьте приведенную ниже ссылку:

Проверить мгновенно Если есть имя пользователя - Проверка ASP.NET MVC Remote

Что вам нужно, это RemoteAttribute для свойства, которое вы проверяете, а также вам нужно реализовать действие контроллера, которое возвращает JsonResult с логическим значением.

Вот краткий пример:

Ваша модель:

    [Required]
    [Display(Name = "User name")]
    [Remote("doesUserNameExist", "Account", HttpMethod = "POST", ErrorMessage = "User name already exists. Please enter a different user name.")]
    public string UserName { get; set; } 

Результат действия:

[HttpPost]
public JsonResult doesUserNameExist(string UserName) {

    var user = Membership.GetUser(UserName);

    return Json(user == null);
}

Вы можете настроить бизнес-логику внутри результата действия для своих нужд.

Кроме того, убедитесь, что на странице регистрации указаны следующие библиотеки, а также ваш файл jQuery:

jquery.validate.min.js

jquery.validate.unobtrusive.min.js

В приведенном выше блоге размещено все, что вам нужно.

Примечание

Имейте в виду, что проверка Remote не срабатывает на стороне сервера. Возможно, вы захотите проверить приведенную ниже ссылку для удаленной проверки на стороне сервера (я не рекомендую использовать его на производстве, но он заполнен отверстиями, но это даст вам представление):

http://www.tugberkugurlu.com/archive/asp-net-mvc-server-side-remote-validation