无法将字符串数组分配给Bootstrap DateTimePicker disabledDates

时间:2017-08-04 08:48:28

标签: javascript asp.net-mvc bootstrap-datetimepicker

我在我的ASP.net MVC5应用程序中使用bootstrap datetimepicker。 我正在尝试从DB中获取禁用日期,创建一个禁用日期数组,然后在javascript中传递该数组: -

C#

public String[] disabledDates { get; set; } // This model property gets set from database.

e.g。 disabledDates = [“2017-08-29”,“2017-11-22”];

<script type="text/javascript">
    $(function () {
        var disabledDatesAr = '@Model.disabledDates';
        $('#scheduleDate').datetimepicker({
            useCurrent: false,
            minDate: new Date(),
            format: 'DD-MM-YYYY hh:mm A',
            showTodayButton: true,
            sideBySide: true,
            showClose: true,
            showClear: true,
            toolbarPlacement: 'top',
            disabledDates: disabledDatesAr
        });
    });
</script>

但是上面的代码不起作用并且DateTimePicker弹出窗口被禁用。 任何人都可以指导我如何将此数组值分配给禁用日期? 提前谢谢。

1 个答案:

答案 0 :(得分:0)

当你有这个部分时:

var disabledDatesAr = '@Model.disabledDates';

您实际上只是调用对象的ToString方法。数组的ToString方法输出如此System.String[]。所以你真的是用剃须刀做的:

var disabledDatesAr = 'System.String[]';

您要做的是创建一个JSON数组,这将输出您期望的语法。

disabledDates = ["2017-08-29","2017-11-22"];

这样做的一个很好的方法就像Stephen Muecke在评论中提到的那样。

var disabledDatesAr = @Html.Raw(Json.Encode(Model.disabledDates));

如果没有Html.Raw razor会尝试编码字符。

以下是一些有用的文档:Json.EncodeHtml.Raw