MVC - 通过ajax将js变量传递给控制器 ,然后在视图中使用它

问题描述 投票:0回答:2

脚本:

<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>

正如您在我的脚本中看到的那样,就是内联日期选择器。当我点击timepicker中的任何日期时,该值将传递给变量formatted_date。 formatted_date也将通过ajax传递给控制器​​(参见calendarDate)。然后将calendarDate作为myDate传递给model(参见控制器)。点击任何日期,radiobutton将基于foreach和.fadein(“slow”)出现在脚本中。但是,当我在foreach中添加&& n.SlotCode == getDate时,无法显示radiobutton列表。 getDate是myDate。

当我使用&& n.SlotCode ==“2/22/2019”,这是有效的,radiobutton列表正在显示。但是当我使用== getDate时,它不起作用。

debugged controller debugged view

因为我正在调试它,我正确地得到了日期。但是无线电按钮列表没有出现,我把它放在成功函数中。但它似乎无法正常工作。

我不知道出了什么问题。请帮忙。 TIA

javascript ajax model-view-controller
2个回答
1
投票

你在ajax调用中缺少一个参数。加

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

目前你没有向控制器发送任何信息


0
投票

你可以调试你的视图代码,看看下面的代码是否返回true:

.SlotCode == getDate

我假设以下条件属实

n.BranchCode ==“MNL1”&& n.Slots> 0

这是您无法看到单选按钮的唯一原因。

© www.soinside.com 2019 - 2024. All rights reserved.