MVC - передача переменной js контроллеру через ajax с последующим ее использованием - PullRequest
0 голосов
/ 21 февраля 2019

скрипт:

<script type="text/javascript">
$(function () {
    $('#datetimepicker').datetimepicker({
        disabledDates: [
            new Date()
        ],
        inline: true,
        format: 'L',
        daysOfWeekDisabled: [0, 6],
        minDate: new Date(),
        useCurrent: false
    });

    $('#datetimepicker').on('change.datetimepicker', function (event) {
        var formatted_date = event.date.format('M/DD/YYYY');
        $('#datetimepickerOut').val(formatted_date);

        $.ajax({
            url: '@Url.Action("Create")',
            contentType: 'application/html; charset=utf-8',
            data: { calendarDate: formatted_date },
            success: function (data) {
                $('#divTimeSlots').fadeIn("slow");
            },
            failure: function (result) {
                alert(errMsg);
            }
        });

    });

    $('#divTimeSlots input').on('change', function (event) {
        $('#SlotTimeOut').val($("[type='radio']:checked").val());
    });
});
</script>

контроллер:

public ActionResult Create(string calendarDate)
{
    testViewModel mvm = new testViewModel();

    mvm.myDate = calendarDate;
}

Создать представление:

<div class="col-md-5" id="divTimeSlots" style="display: none;">
@{
    var getDate = Model.myDate;

    foreach (var rTimeSlots in Model.ListSlotTimeForRadio.Where(n =>
        n.BranchCode == "MNL1" &&
        n.Slots > 0
        &&
        n.SlotCode == getDate
        ))
    {
        @Html.RadioButtonFor(model => model.ListSlotTimeForRadio, rTimeSlots.SlotTime,
        new { htmlAttributes =
            new Dictionary<string, object>
            {
                { "id", "timeSlots" },
                { "class", "form-control" }
            }
        })

        @rTimeSlots.SlotTime<br>
    }
}
</div>

как вы можете видеть в моем скрипте, это встроенный указатель даты.когда я нажимаю на любую дату в таймере, значение передается переменной formatted_date.formatted_date также будет передаваться контроллеру через ajax (см. calendarDate).затем calendarDate передается модели как myDate (см. контроллер).при нажатии на любую дату, радиокнопка будет отображаться на основе foreach и .fadein («медленно») в скрипте.но когда я добавляю && n.SlotCode == getDate в foreach, список радиокнопок не появляется.getDate is myDate.

, когда я использую && n.SlotCode == "2/22/2019", это работает, список радиокнопок отображается.но когда я использую == getDate, это не работает.

debugged controller debugged view

, поскольку я отлаживаю его, я получаю дату правильно.но список радиокнопок не появляется, я поместил его в функцию успеха.но кажется, что он работает неправильно.

я не знаю, что не так.пожалуйста помоги.ТИА

Ответы [ 2 ]

0 голосов
/ 21 февраля 2019

Можете ли вы отладить код представления и посмотреть, вернет ли приведенный ниже код true:

.SlotCode == getDate

Я предполагаю, что нижеприведенные условия выполняются

n.BranchCode == "MNL1" && n.Slots> 0

Это единственная причина, по которой вы не можете видеть переключатель.

0 голосов
/ 21 февраля 2019

В вашем вызове ajax отсутствует параметр.Добавить

    $.ajax({
        url: '@Url.Action("Create")',
        type: 'POST',
        contentType: 'application/html; charset=utf-8',
        data: { calendarDate: formatted_date },
        success: function (data) {}

В данный момент вы ничего не отправляете на контроллер

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...