Передача логического значения в моем виде .net MVC в javascript, но JS не принимает True, хочет true - PullRequest
14 голосов
/ 17 марта 2009

Я передаю логическое значение функции javascript на моей странице действий .net mvc.

проблема в том, что он выводит значение True, а javascript, по-видимому, принимает только true (в нижнем регистре).

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

Ответы [ 6 ]

18 голосов
/ 17 марта 2009

Если вы используете метод ToString () в логической переменной .NET для отправки значения в Javascript, попробуйте заменить его на что-то вроде

(myBoolean ? "true" : "false")

чтобы он отправлялся в Javascript как соответствующее строковое представление требуемого значения bool.

РЕДАКТИРОВАТЬ: Обратите внимание на разницу между:

<script type="text/javascript">
var myBoolean = <%= (myBoolean ? "true" : "false") %>;
</script>

и

<script type="text/javascript">
var myBoolean = '<%= (myBoolean ? "true" : "false") %>';
</script>

В первом примере вы получите:

var myBoolean = false;

и это буквальное логическое ложное. Во втором вы получите:

var myBoolean = 'false';

и в JavaScript 'false' является непустой строкой и, следовательно, если вычислено в логическом контексте, оно будет истинным. Ну, правда. :)

5 голосов
/ 15 мая 2012

Я создал метод расширения, чтобы использовать его в любом логическом свойстве модели.

    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 голосов
/ 29 мая 2013

если вам нужно делать это часто, просто добавьте это в начало javascript (или вашего файла библиотеки js и т. Д.)

var True = true; False = false;

в простом одноразовом случае:

var x = ('<%= boolValue %>'=='True' );
1 голос
/ 29 октября 2010

Вы можете использовать javascript Boolean() метод

if (Boolean(value)) {}
0 голосов
/ 07 сентября 2016

Для меня этот подход работает (MVC4)

<script type="text/javascript">

if (@{if (Model.IsSubmitted) { @Html.Raw("true"); } else { @Html.Raw("false"); } } == true)
{
// code
}

</script>
0 голосов
/ 17 марта 2009

Вы хотите использовать это:

(.NET 3.5) System.Web.Script.Serialization.JavaScriptSerializer.Serialize

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...