Передача логического значения в моем .net MVC-представлении на javascript, но JS не принимает True, хочет true
Я передаю логическое значение функции javascript на моей странице действий .net mvc.
проблема заключается в том, что она выводит значение True, а javascript, по-видимому, принимает только "true" (в нижнем регистре).
Я не хочу взломать переменную и сделать ее строкой и преобразовать ее в нижний регистр в моем действии, но похоже, что у меня нет выбора?
Ответы
Ответ 1
Если вы используете метод ToString() в .NET boolean для отправки значения в Javascript, попробуйте заменить его чем-то вроде
(myBoolean ? "true" : "false")
чтобы он был отправлен в Javascript как соответствующее строковое представление требуемого значения bool.
EDIT: Обратите внимание на разницу между:
<script type="text/javascript">
var myBoolean = <%= (myBoolean ? "true" : "false") %>;
</script>
и
<script type="text/javascript">
var myBoolean = '<%= (myBoolean ? "true" : "false") %>';
</script>
В первом примере вы получите:
var myBoolean = false;
и что буквальное логическое значение false. Во втором случае вы получите:
var myBoolean = 'false';
а в JavaScript "false" - это непустая строка и, следовательно, если она вычисляется в булевом контексте, это будет правдой. Ну, правда-иш.:)
Ответ 2
Я создал метод расширения, чтобы использовать его в любом логическом свойстве модели.
public static class GeneralExtensions
{
public static string GetValueForJS(this bool argValue)
{
return argValue ? "true" : "false";
}
}
Теперь в представлении я могу просто использовать:
<script type="text/javascript">
var variable = @Model.IsFoo.GetValueForJS();
</script>
Ответ 3
если вам нужно это делать часто, просто добавьте это в начало javascript (или ваш файл библиотеки js и т.д.).
var True = true; False = false;
в одном простом случае:
var x = ('<%= boolValue %>'=='True' );
Ответ 4
Вы можете использовать метод javascript Boolean()
if (Boolean(value)) {}
Ответ 5
Вы хотите использовать это:
(.NET 3.5)
System.Web.Script.Serialization.JavaScriptSerializer.Serialize
Ответ 6
Для меня этот подход работает (MVC4)
<script type="text/javascript">
if (@{if (Model.IsSubmitted) { @Html.Raw("true"); } else { @Html.Raw("false"); } } == true)
{
// code
}
</script>
Ответ 7
Я написал общедоступный метод js, когда мне нужно проверить переданную логическую переменную из действия в javaScript, просто отправить исходное значение этому методу для анализа.
function GetBooleanValue(value) {
if (value == undefined) return false;
var parsedValue = value.toLowerCase();
if (parsedValue === "false") return false;
else if (parsedValue === "true") return true;
else return false;
}