Мне нужно передать коллекцию объекта и строку в контроллер MVC - PullRequest
0 голосов
/ 09 сентября 2018

Я изо всех сил пытаюсь передать коллекцию объекта и строку обратно из Ajax обратно в контроллер в MVC.

У меня есть следующее, которое отлично работает:

    var ClientObject = [];

    $.each($("#myClients option:selected"), function () {

        ClientObject.push({ "Client_ID": $(this).attr("value"), "Client_Name": $(this).text().trim() });
    });

    var serviceURL = '/Filter/AppendClientFilter';
    var datapost = JSON.stringify({ ClientUI: ClientObject });
    $.ajax({
        type: "POST",
        url: serviceURL,
        contentType: "application/json; charset=utf-8", // specify the content type
        dataType: 'json',
        data: datapost,
        traditional: true,

        success: function (data) {
            if (data.status === 'OK') {
                window.location.href = data.Url
            }
            else {
                alert("The status cannot be updated at this time");
            }
        }
    });
}

внутренний контроллер:

    [HttpPost]
    public ActionResult AppendClientFilter( List<ClientUI> ClientUI)
    {
        var userid = User.Identity.GetUserId();


        foreach ( var item in ClientUI)
        {
            var recordexist = clientfilterrepo.GetAll(x => x.AspNet_ID == userid && x.Client_ID == item.Client_ID).FirstOrDefault();
            if (recordexist == null)
            {
                clientfilterrepo.Add(new ClientFilter { AspNet_ID = userid, Client_ID = item.Client_ID, Client_Name = item.Client_Name });
            }
        }

        var redirectUrl = new UrlHelper(Request.RequestContext).Action("ClientsFilter", "Filter", new { });

        return Json(new { Url = redirectUrl, status = "OK" });

Модель ClientUI выглядит следующим образом открытый класс ClientUI { public int Client_ID {get; задавать; } открытая строка Client_Name {get; задавать; } }

Я хочу добавить строку в пост ajax в качестве дополнительного параметра.

Как я могу это сделать?

1 Ответ

0 голосов
/ 09 сентября 2018

Добавьте параметр типа string в метод действия

[HttpPost]
public ActionResult AppendClientFilter2(List<ClientUI> ClientUI, string name)
{
    // to do : Your existing code
    return Json(new { Url = redirectUrl, status = "OK" });
}

Теперь вы можете добавить это новое строковое значение к вашим данным

var ClientObject = [];

// to do : populate ClientObject 

var serviceURL = '/Filter/AppendClientFilter2';
var datapost = JSON.stringify({ ClientUI: ClientObject, name: "That extra string" });

$.ajax({
    type: "POST",
    url: serviceURL,
    contentType: "application/json; charset=utf-8",
    data: datapost,
    success: function (data) {
        console.log(JSON.stringify(data));
        // do something with data
    },
    error: function (e) {
        console.log(e);
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...