Условная проверка DateTime в x-kendo-template

Approved - это DateTime в моей модели. ApprovedDate — это переменная даты и времени в моем представлении Razor. Блок сценария находится внутри того же представления Razor.

Я хочу протестировать Approved, чтобы увидеть, было ли оно до ApprovedDate, и заменить его пустой строкой "", если это так, внутри шаблона деталей x-kendo-template.

@{ var approvedDate = DateTime.Parse("01-01-2016"); }

<script id="detail-template" type="text/x-kendo-template">

 <ul>

    < li>#if (# #= Approved # # < @approvedDate) {# ""#}else{# #= kendo.toString(Approved, "MM-dd-yyyy") # #}#</li>

 </ul>

</script>

Приведенный выше синтаксис приводит к сбою сценария подробного шаблона.

Каков синтаксис, чтобы этот оператор if работал?


person Joe    schedule 19.01.2016    source источник


Ответы (1)


Было две проблемы: синтаксическая и использование переменной Razor DateTime в условном выражении.

У меня есть как if else, так и тройной синтаксис, и я преобразовал переменную Razor в дату javascript.

@{ var approvedDate = "01-01-2015"; }

<script id="tab_template" type="text/kendo-tmpl">
 # var approvedDate = new Date(Date.parse(@approvedDate)); #

...

<li><label>Test1: </label>#if (Applied < approvedDate ) {# #: kendo.toString(Applied, "MM-dd-yyyy") # #}else{# Fail #}#</li>
 <li><label>Test2: </label>#if (Applied > approvedDate ) {# #: kendo.toString(Applied, "MM-dd-yyyy") # #}else{# Fail #}#</li>
 <li><label>Test3:</label>#= Applied < approvedDate ? kendo.toString(Applied, "MM-dd-yyyy") : "Fail" #</li>
 <li><label>Test4:</label>#= Applied > approvedDate ? kendo.toString(Applied, "MM-dd-yyyy") : "Fail" #</li>

...

</script>

Отобразилось следующее:

Тест 1: провал

Тест2: 22.08.2015

Тест 3: провал

Тест4: 22.08.2015

Я немного изменил его по сравнению с ОП. Теперь он отображает Applied, если условие выполнено, и «Fail», если оно не выполнено. Теперь, когда эти две проблемы решены, код можно легко изменить до исходного поведения.

person Joe    schedule 22.01.2016