Получение данных от Json, возвращаемых действием контроллера - PullRequest
0 голосов
/ 11 февраля 2020

У меня есть модал, который я пытаюсь заполнить, посылая модал через JSON объект из действия контроллера. Кажется, что она возвращает модель очень хорошо, однако мне трудно извлечь данные из модели для заполнения HTML .. Ниже приведен мой код.

Если кто-то может помочь исправить мой синтаксис в JS, было бы очень признательно.

Действие контроллера:

      [HttpGet]
    public ActionResult JobPollerParameters(int jobRequestId)
    {
        var model = new Dashboard.Web.Models.Tools.JobPollerMonitorResponseModel();

        try
        {
            using (var client = new DashboardAPIClient())
            {
                var response = client.GetJobRequestParemeters(jobRequestId);
                model.JobRequestParameters = response.JobRequestParameters;


            }
        }
        catch (Exception ex)
        {
            ExceptionHandling.LogException(ex);
            throw;
        }

        return Json( model.JobRequestParameters, JsonRequestBehavior.AllowGet);
    }

Модал, для которого необходимо отобразить данные JSON:

<div class="modal fade" id="paramsModal" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
    <div class="modal-content">
        <div class="modal-header modal-header-primary">
            <a class="btn btn-xs btn-primary pull-right" data-dismiss="modal" aria-label="Close"><span class="glyphicon glyphicon-remove"></span></a>
            <h4 class="modal-title" id="modalTitleText"></h4>
        </div>
        <div class="modal-body">
            <div class="row">
                <div class="col-md-3 font-weight-bold">Name:</div>
                <div class="col-md-9" id="modalName"></div>
            </div>
            <div class="row">
                <div class="col-md-3 font-weight-bold">Message:</div>
                <div class="col-md-9 text-break" id="modalMessage"></div>
            </div>
        </div>
        <div class="modal-footer">
            <button type="button" class="btn btn-primary" data-dismiss="modal">Close</button>
        </div>
    </div>
</div>

JS Функция:

    $('#paramModalBtn').click(function () {

    var col = $('#requestId');
    var jobRequestId = col.data("id");

    //console.log(jobRequestId);

     $.ajax({
        url: '@Url.Action("JobPollerParameters", "Tools")',
         data: { "jobRequestId": jobRequestId},
        success: function(results){

            $modal = $('#paramsModal');
            $modal.modal("show");

            var name = JSON.parse(results.name);
            var message = JSON.parse(results.message)

            $('#modalName').text(name);
            $('#modalMessage').text(message);
        }
    });
});

Также для некоторого контекста я хотел бы показать, что возвращаемой моделью должна быть список «JobRequestParameters», из которых мне нужны Model.JobRequestParameters.Name и JobRequestParameters.value.

Если я регистрирую результаты в консоли, я вижу, что мне действительно нужно.

JobParameterId: 118190
JobRequestId: 118190
Name: "CUSTOMERTYPE"
Value: "Notary Pre-Assessment"

Имя и значение - это то, что мне нужно.

Ответы [ 2 ]

1 голос
/ 11 февраля 2020

Контроллер возвращает строку, отформатированную как JSON, которая затем может быть проанализирована в объекте JavaScript и использована как таковая.

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

var obj = JSON.parse(results);
$('#modalName').text(obj.name);
$('#modalMessage').text(obj.message);
0 голосов
/ 12 февраля 2020

Вот решение для десериализации объекта JSON

    $("button").click(function () {

    var col = $('#requestId');
    var jobRequestId = col.data("id");

     $.ajax({
        url: '@Url.Action("JobPollerParameters", "Tools")',
         data: { "jobRequestId": jobRequestId},
        success: function(results){

            $modal = $('#paramsModal');
            $modal.modal("show");
            console.log(results);

            var name = JSON.stringify(results[0].Name);
            var value = JSON.stringify(results[0].Value);

            $('#modalName').text(name);
            $('#modalMessage').text(value);
        }
    });
});
...