Я использую движок представления ASP.Net MVC 3. Razor.
У меня есть требование генерировать некоторый код JavaScript в моем представлении на основе значения в моей модели представления.Значение, которое мне нужно использовать, является логическим, для этого примера давайте назовем его IsSet
.
Итак, я хочу создать логическое значение JavaScript на основе этого значения, которое позже можно будет использовать в скрипте.
Имейте в виду, что для всех приведенных ниже примеров у меня есть этот фрагмент кода в верхней части моего представления ...
@{ string IsSet = Model.IsSet ? "true" : "false"; }
ПРИМЕЧАНИЕ : Все примеры нижеявляются JavaScript.
Первая попытка ...
var IsSet = @(IsSet);
... это на самом деле работает, проблема в том, что она нарушает автоформатирование (CTRL + E, D) в VS 2010 из-за плохо отформатированного JavaScript - как и следовало ожидать, и это недопустимо.
Вторая попытка ...
var IsSet = "@(IsSet)";
... Я знаю, JavaScript умный, он будет автоматически анализировать мою строку при необходимости.Упс, забыл, что это строковый тип, и все, кроме пустых, принимает значение true.
Третья попытка ...
var IsSet = Boolean("@(IsSet)");
.... конечно, это будетwork ... nope, снова преобразуем непустую строку в true (плохой анализатор!)
Четвертая попытка ...
var IsSet = "@(IsSet)" === "true";
Наконец то, что работает,но для меня это выглядит не очень хорошо.
Я воспользуюсь этим, если понадобится, но в конечном итоге мой вопрос: есть ли лучший способ справиться с такой ситуацией?Возможно, нежелательное поведение в моей первой попытке - это просто то, что Microsoft, возможно, упустила из виду?
Если у кого-то есть хорошая и аккуратная пятая попытка для меня, это было бы хорошо.
Для меня важно то, что автоформатирование в VS 2010 не ломается
Спасибо