Ответ 1
Попробуйте следующее:
myjavascript( <%= MyBooleanVariableInCSharp.ToString().ToLower() %> );
Имея проблемы, где на моей странице .aspx я передаю логическую переменную (С#) в функцию javascript, которая ожидает булевский тип.
BUt переменная С# возвращает True, а javascript не нравится в верхнем регистре.
myjavascript( <%= MyBooleanVariableInCSharp %> );
Если я преобразую переменную С# в строку, тогда моя переменная javascript станет строкой, а не значением js bool!
Каково решение этого кошмара? лол
Попробуйте следующее:
myjavascript( <%= MyBooleanVariableInCSharp.ToString().ToLower() %> );
если вам нужно это делать часто, просто добавьте это в начало javascript (или ваш файл библиотеки js и т.д.).
var True = true, False = false;
Затем вы кодируете
myjavascript( <%= MyBooleanVariableInCSharp %> );
Будет работать нормально.
Другой вариант, если по какой-либо причине вы не хотите использовать переменные, нужно написать свой javascript-вызов следующим образом:
myjavascript( '<%= MyBooleanVariableInCSharp %>'=='True' );
Вы также можете это сделать.
myjavascript(<%=myBooleanVariableInCSharp ? "true" : "false" %>);
Другие ответы нацелены на старую версию, перед Razor
если вы используете Razor, то это решение
myjavascript( @MyBooleanVariableInCSharp.ToString().ToLower() );
У С# есть встроенный метод. По крайней мере, в .NET v4 и новее.
var myBoolean = <% = myBooleanFromCodeBehind.ToJs()% > ;
function toBool(s){
return s==="True";
}
var b = toBool("@csharpvariable.ToBoolean()");