Передача логического значения в моем .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;
}