Почему RAZOR выводит логическое значение с заглавной буквы?

@{
    bool a = false;
 }    

<script>

var element = '<a href="www.testurl.com" + '?a=' + @(a)';
$('#anyElement').append(element);

</script>

Тег привязки будет иметь href из www.testurl.com?a=False.

По крайней мере, в IE11 переменная a будет отображаться как False вместо false. Это вызывает ошибку ECMAScript, потому что теперь компилятор JavaScript / ECMAScript считает False неопределенной переменной.

Почему RAZOR не отображает эту переменную в нижнем регистре?


person IEnjoyEatingVegetables    schedule 23.08.2016    source источник


Ответы (1)


Razor просто использует ToString()-метод того, что вы туда поместили. В случае bool это будет оцениваться как True или False. Чтобы обойти проблему, просто введите его в нижний регистр:

@{
    bool a = false;
}    

<script>

var element = '<a href="www.testurl.com" + '?a.ToString().ToLower()=' +   @(a)';
$('#anyElement').append(element);

</script>
person Kenneth    schedule 23.08.2016
comment
Ненавижу, что это происходит, но это работает. - person Stephen Wigginton; 18.12.2020