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

Unable to assign String Array to Bootstrap DateTimePicker disabledDates

我在 ASP.net MVC5 应用程序中使用 bootstrap 日期时间选择器。 我正在尝试从数据库中获取禁用日期,创建一个禁用日期数组,然后将该数组传递给 javascript:-

C#

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

例如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 弹出窗口被禁用。 谁能指导我如何将此数组值分配给禁用日期? 提前致谢。

当你有这个部分时:

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 剃刀会尝试对字符进行编码。

这里有一些有用的文档:Json.Encode and Html.Raw