Dhyanga Ответов: 1

Проблема необходимости анализа переменной c# список на jQuery


Привет,

У меня возникли проблемы с использованием переменной списка c# в jquery при использовании jQuery datepicker. ниже приведен мой код в файле. cshmtl.

Если я использую "var closedDates = [@String.Join(",", hlist)]; " ниже это не работает. но если я использую "var closedDates = ['2017/01/11', '2017/01/12'];, он работает нормально. Так что это проблема разбора, которая у меня есть. Пожалуйста помочь.


@{
   List<string> hlist = new List<string>();
   hlist.Add("2017/01/11");
   hlist.Add("2017/01/12");

 <script type="text/javascript">
$(function () {
                     var year = (new Date).getFullYear();

                     $("#datepicker").datepicker({
                         beforeShowDay: nonWorkingDates,
                         minDate: '+14D',
                         maxDate: new Date(2017, 8, 30)
});
 function nonWorkingDates(date) {
                   var day = date.getDay(), Sunday = 0, Monday = 1, Tuesday = 2, Wednesday = 3, Thursday = 4, Friday = 5, Saturday = 6;
                   @*var closedDates = [@String.Join(",",hlist)];*@
                   var closedDays = [[Sunday]];
                   for (var i = 0; i < closedDays.length; i++) {
                       if (day == closedDays[i][0]) {
                           return [true];
                       }

                   }

                     var closedDates = [@String.Join(",", hlist)];
             
         //var closedDates = ['2017/01/11', '2017/01/12'];
                       var m = date.getMonth(), d = date.getDate(), y = date.getFullYear(), mon = "", day = "";
                       for (i = 0; i < closedDates.length; i++) {
                           m = m + 1;
                           mon = m.toString();
                           if (mon.length < 2) {
                               m = "0" + m;
                           }
                           day = d.toString();
                           if (day.length < 2) {
                               d = "0" + d;
                           }
                           if ($.inArray(y + '/' + m + '/' + d, closedDates) > -1) {
                               return [true];
                           }
                       }
                     
                   

                  

                   return [false];
               }

           });
 </script>
                  

}


Что я уже пробовал:

Я также пробовал разбор как
var closedDates = '<%= this.javaSerial.Serialize(hlist) %>';
но это не сработало.

Также
var closedDates = <%= this.javaSerial.Serialize(hlist) %>;
не получилось.

F-ES Sitecore

javascript запускается из готового html, отправленного в браузер, он не запускается с вашей страницы cshtml. Итак, просмотрите исходный код страницы, и вы увидите что-то вроде этого;

ВАР closedDates = [2017/01/11, 2017/01/12];

Поскольку это html, который вы генерируете, вы ни в коем случае не просите свой код обернуть отдельные строки в апострофы. Измените свой код, чтобы сгенерировать список с апострофами и посмотреть, работает ли он; всегда помните, чтобы просмотреть исходный код страницы, чтобы вы могли точно видеть, какой javascript вы выполняете.

Dhyanga

Как это сделать? Я так запуталась. Было бы здорово, если бы вы привели пример. Я думал
var closedDates = [@String.Присоединиться(",", горизонтального)]; линии-добавление апострофов в списке.

Karthik_Mahalingam

Всегда использовать  Ответить  кнопка, чтобы отправить комментарии / запрос пользователю, чтобы пользователь получил уведомление и ответил на ваш текст.

Dhyanga

ну ладно. Так будет и в следующий раз. Я никогда раньше не использовал комментарии, поэтому не знал этого. Что ж, спасибо, что дали мне знать.

Karthik_Mahalingam

:)

1 Ответов

Рейтинг:
8

Dhyanga

var arr = "'"+String.Join("','", hlist)+"'";      


var closedDates = [@Html.Raw(@arr)];


Это сработало .