2014-08-29 1 views
0

Так что я пытаюсь выполнить скрипт при загрузке моего представления. Проблема в том, что всякий раз, когда я использую свою логическую переменную как условную, результат всегда является True, даже если он распознается как значение False.Логическая переменная из ViewModel не может использоваться как условие в представлении

Более конкретно:

<script type="text/javascript"> 
    $(document).ready(function() { 
     alert('@Model.MyBool'); 
     alert('@Model.MyBool' ? "True" : "False"); 
    }); 
</script> 

Выходы

False 
True 

ИЛИ

True 
True 

кажется, что сценарий может распознать правильное значение переменной, но мгновенно забывает его, когда он пытается использовать его как условное. Я даже попытался сохранить его во временной переменной, и это все равно произойдет.

Есть ли причина для этого? Я не могу найти какую-либо информацию через Google, и это сводит меня с ума.

Спасибо!

ответ

0

В JavaScript условные Evals если строка "False" равна undefined, так как он не undefined это Evals к true.

Разделите переменную на логическое или используйте предупреждение таким образом;

alert('@Model.MyBool' === "True" ? "True" : "False"); 
0

Возможно, это связано с тем, что вы переносите переменную в одинарные кавычки. Попробуйте удалить кавычки.

alert(@Model.MyBool.ToString().ToLower() ? "True" : "False"); 
+0

удаление одиночных кавычек вызывает синтаксическую ошибку – user3799284

+0

Изменен. Поскольку MVC отображает bool как «False» или «True», и это не допустимые литералы в Javascript, будет выведена ошибка. Поэтому преобразуйте значение bool в нижний регистр. Там могут быть лучшие решения. – Alex

Смежные вопросы