Если записи существуют в базе данных, тогда выполните условие - PullRequest
2 голосов
/ 04 марта 2020

У меня есть таблица в моей SQL базе данных сервера со столбцами

loginID, loginUser, loginPassword

Используя Entity Framework, я хочу проверить, существует ли данная запись. Я использую ASP. NET MVC с AJAX для отправки данных моему методу контроллера.

$("#loginBtn").click(function () {
    var loginUserRequest = $("#email").val();
    var loginPassRequest = $("#pwd").val();

    var loginTheUser = {
        loginID: 1,
        loginUser: loginUserRequest,
        loginPassword: loginPassRequest
    }

    $.ajax({
        type: "POST",
        url: "Home/LoginUser",
        data: loginTheUser
    });

});

[HttpPost]
public ActionResult LoginUser(loginTable loginData)
{
    WebEntities entit = new WebEntities();
    var context = entit.loginTables.FirstOrDefault(lu => lu.loginUser == loginData.loginUser && lu.loginPassword == loginData.loginPassword);

    if (context == null)
    {
        return View();
    }
    else
    {
        return RedirectToAction("Contact", "Home");
    }
}

<form id="loginForm">
    <div class="form-group">
        <label>Username:</label>
        <input type="text" class="form-control" id="email">
    </div>
    <div class="form-group">
        <label>Password:</label>
        <input type="password" class="form-control" id="pwd">
    </div>
    <button id="loginBtn" type="submit" class="btn btn-default">Submit</button>
</form>

Ответы [ 2 ]

0 голосов
/ 05 марта 2020

Лучший способ сделать это - убедиться, что вы полностью используете ajax. Верните json результат из вашего контроллера, чтобы было легко показать любую форму сообщений. Вот что вы можете сделать, чтобы получить лучшее. Сначала измените ваш код javascript следующим образом:

 $("#loginBtn").click(function () {
        var loginUserRequest = $("#email").val();
        var loginPassRequest = $("#pwd").val();
        var loginTheUser = {
            loginID: 1,
            loginUser: loginUserRequest,
            loginPassword: loginPassRequest
        };


        $.when(loginUser(loginTheUser, "/Home/LoginUser")).done(function (response) {

            if (response.error == true) {
                alert(response.message);
            } else {
                window.location.href = '/home/contact';
            }

        }).fail(function (err) {
            console.log(err);
        });

    });

Как видно из ответа ajax, я проверяю, является ли response.error истиной, то есть мне нужно отправить его из контроллер. Ниже приведен модифицированный метод действия контроллера:

 [HttpPost]
    public ActionResult LoginUser(loginTable loginData)
    {
        WebEntities entit = new WebEntities();
        var context = entit.loginTables.Any(lu => lu.loginUser == loginData.loginUser && lu.loginPassword == loginData.loginPassword);

        if (!context)
        {
            return Json(new { error = true, message = "This user does not exist" }, JsonRequestBehavior.AllowGet);
        }
        else
        {
            return Json(new
            {
                error = false
            }, JsonRequestBehavior.AllowGet);                
        }
    }

Надеюсь, это поможет.

0 голосов
/ 04 марта 2020

Я предполагаю, что проблема в том, что ваши return view и redirectToAction не работают? Вы совершаете вызов Ajax без правильной обработки результата обратно на ваш ajax вызов.

Попробуйте что-то подобное. Я не проверял, возможно, вам придется поиграть с этим

[HttpPost]
public ActionResult LoginUser(loginTable loginData)
{
    WebEntities entit = new WebEntities();
    var context = entit.loginTables.FirstOrDefault(lu => lu.loginUser == loginData.loginUser && lu.loginPassword == loginData.loginPassword);

    if (context == null)
    {  
      return new HttpStatusCodeResult(401, "Unauthorized!"); 
    }
    else
    {
        var url = Url.Action("Contact", "Home")
        return Json(url);
    }

}

 $.ajax({
    type: "POST",
    url: "Home/LoginUser",
    data: loginTheUser,
    success: function(response){  
      window.location.replace(response); 
    },
    error: function(XMLHttpRequest, textStatus, errorThrown) { 
      alert("Status: " + textStatus); alert("Error: " + errorThrown); 
    }      
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...