ПУБЛИКАЦИЯ данных массива JSON с параметрами в веб-API

#jquery #json #ajax #asp.net-mvc #asp.net-web-api

#jquery #json #ajax #asp.net-mvc #asp.net-web-api

Вопрос:

ОБНОВЛЕНО:

Я создаю простое приложение, используя MVC и Web API в качестве нового для меня упражнения. Это позволяет пользователю вставлять массив данных JSON в текстовую область и передавать его контроллеру Web API через AJAX с параметром сортировки, где значение основано на выбранной опции в выпадающем списке. Сортировку будет выполнять контроллер API. После сортировки он вернет URL-адрес, содержащий значение параметра, аналогичное приведенному ниже:

Home /Index /?sort=возраст
Home /Index /?sort=Фамилия
Home /Index /?sort= зарегистрирован

Я не уверен, куда поместить параметр строки запроса.

введите описание изображения здесь

ОБНОВЛЕНО:

Вот мой вызов AJAX до сих пор..

 $(document).ready(function () {
    var profiles = $('#txtJSONData').val().replace(/(rn|n|r)/g,"");
    $('#btnSubmit').click(function () {
        $.ajax({
            url: '/api/default',
            data: JSON.stringify(JSON.parse(profiles)),
            type: 'POST',
            dataType: 'application/json',
            success: function(data) {
                alert("success");
            },
            error: function() {
                alert("error");
            }
        });
    });
});
 

ОБНОВЛЕНО:

Я уже получаю значения публикуемого массива JSON. Однако мне также нужно передать параметр строки запроса сортировки и его значение для выполнения сортировки. Я не уверен, куда их поместить. Нужно ли мне добавлять их в маршрут API? Или позволить контроллеру MVC обрабатывать это?

 public class DefaultController : ApiController
{
    [Route("api/default")]
    [HttpPost]
    public HttpResponseMessage Post([FromBody] JToken jsonBody)
    {

    }
 }
 

Пытался найти решение как здесь, так и через Интернет, но не смог найти аналогичный сценарий с моим. Любая помощь и / или предложения будут высоко оценены. Заранее спасибо!

Комментарии:

1. Что такое [HttpPost()] ?

2. Это должно быть return JSON.stringify({ data: $('#txtJSONData').val() }); для привязки к параметру в вашем методе. Но данные, которые вы отправляете, похоже, не имеют никакого отношения к List<Profile>

3. Что вы видите в инспекторе браузера в разделе «Сеть»? (F12 в большинстве браузеров)

4. @Div Упс, уже удалено ‘()’

5. @StephenMuecke Нужно ли, чтобы моя модель / список также были названы как Employee?

Ответ №1:

1 — Добавьте параметр сортировки в свое действие

 public class DefaultController : ApiController
{
    [Route("api/default")]
    [HttpPost]
    public HttpResponseMessage Post(string sort, [FromBody] JToken jsonBody)
    {

    }
 }
 

2 — Вы можете вызвать свое действие, как показано ниже:

 $(document).ready(function () {
    var profiles = $('#txtJSONData').val().replace(/(rn|n|r)/g,"");
    $('#btnSubmit').click(function () {
        $.ajax({
            url: '/api/default?sort=asc',
            data: JSON.stringify(JSON.parse(profiles)),
            type: 'POST',
            dataType: 'application/json',
            success: function(data) {
                alert("success");
            },
            error: function() {
                alert("error");
            }
        });
    });
});