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