ASP.Net C # MCV - передать значение из Ajax Jquery в контроллер - PullRequest
0 голосов
/ 15 января 2019

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

Ajax / Jquery

//unlock user account
    $("#results").on('click', ".unlockactionbutton", function (e) {
        e.preventDefault();
        var userid = this.getAttribute("userid");
        if (envdd.children(':selected').val() == "") {
            alert("Please select User"); 
        } else {
            alert(userid);
            $.ajax({
                type: "GET",
                url: "@Url.Action("UnlockUser", "Home", new { userid = userid })",
                //Url.Action("UnlockUser", "Home", new { id = userid });
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                data: JSON.stringify(userid),
                success: function (data) {
                    console.log(data);
                },
                error: function(data) {
                    alert('error');
                    console.log(data);
                }
            });
        }
    });

Вот результат действия. У меня есть код, просто помещающий комментарий в консоль, чтобы я мог видеть, что он работает на данный момент.

[HttpPost]
    public ActionResult UnlockUser(string userid)
    {
        if (userid != "")
        {
            return Json("success - call from HomeController", JsonRequestBehavior.AllowGet);
        }
        else
        {
            return Json("error", JsonRequestBehavior.AllowGet);
        }
    }

Ответы [ 3 ]

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

В вашем ajax-запросе вы используете глагол GET, а ваше действие является методом POST.

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

Попробуйте что-то вроде этого, это будет работать:

$("#results").click(function (){
    var userid = this.getAttribute("userid");
    $.ajax({
        type: "POST",
        url: "/Home/UnlockUser",
        "data": "{userid:'" + userid + "'}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (data) {
             console.log(data);
        }
    });
})
0 голосов
/ 15 января 2019

Действие контроллера украшено HttpPost, но вы отправляете запрос GET в ajax, измените тип на type: 'POST',.

Вам не нужно добавлять данные в вашстрока запроса при выдаче запроса POST.

Кроме того, если вы указываете application/json, убедитесь, что вы отправляете json, в момент отправки строки.Таким образом, вы можете удалить строку contentType: "application/json; charset=utf-8", или изменить параметр данных на data: JSON.stringify({ userid: userid }).

Ваш запрос ajax может выглядеть следующим образом:

    $.ajax({
            type: "POST",
            url: "@Url.Action("UnlockUser", "Home")",  
            dataType: "json",
            data: JSON.stringify(userid),
            success: function (data) {
                console.log(data);
            },
            error: function(data) {
                alert('error');
                console.log(data);
            }
        });

Или

    $.ajax({
            type: "POST",
            url: "@Url.Action("UnlockUser", "Home")",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            data: JSON.stringify({ "userid" : userid }),
            success: function (data) {
                console.log(data);
            },
            error: function(data) {
                alert('error');
                console.log(data);
            }
        });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...