Używam mechanizmu wyświetlania maszynki ASP.Net MVC 3 Razor.MVC 3 Razor View: Generowanie kodu JavaScript z wartości modelu boolowskiego
Mam wymóg generowania kodu JavaScript w moim widoku na podstawie wartości w moim modelu widoku. Wartość, której potrzebuję użyć, jest wartością logiczną, w tym przykładzie można ją nazwać IsSet
.
Co chcę zrobić, to utworzyć boolean JavaScript w oparciu o tę wartość, której później mogę użyć w skrypcie.
Należy pamiętać, że dla wszystkich poniżej przykłady Mam ten fragment kodu na szczycie moim zdaniem ...
@{ string IsSet = Model.IsSet ? "true" : "false"; }
UWAGA: Wszystkie poniższe przykłady JavaScript.
Pierwsza próba ...
var IsSet = @(IsSet);
... to faktycznie działa, problem jest łamie auto-formatowanie (Ctrl + E, D) w VS 2010 z powodu źle sformatowane JavaScript - jak można się spodziewać, a to nie jest dopuszczalne.
Druga próba ...
var IsSet = "@(IsSet)";
... Wiem, JavaScript jest mądry, to zostanie automatycznie analizować mój ciąg, gdy są potrzebne. Ooops, zapomniałem, że jest to ciąg znaków, a wszystko inne, niż puste, jest prawdziwe.
Trzecia próba ...
var IsSet = Boolean("@(IsSet)");
.... na pewno to będzie działać ... nope, konwersja niepusty ciąg true ponownie (złe parsera!)
czwarte próbować ...
var IsSet = "@(IsSet)" === "true";
Wreszcie coś, co działa, ale to nie wygląda wspaniale mnie.
Użyję tego w razie potrzeby, ale ostatecznie moje pytanie brzmi: czy istnieje lepszy sposób radzenia sobie z taką sytuacją? Być może niechciane zachowanie w mojej pierwszej próbie jest czymś, co Microsoft przeoczył?
Jeśli ktoś ma miłą i uporządkowaną piątą próbę dla mnie, to byłoby dobrze.
Ważną rzeczą dla mnie jest to, że auto-formatowanie w VS 2010 nie łamie
Dzięki
Muszę się zgodzić z pierwszą próbą - to wygląda dla mnie jak najbardziej naturalnie, ponieważ nie szarpiesz, a potem rzucasz coś, co było już boolowskie! Używałem tej techniki bardzo dużo w moim kodzie Razor/JS i wygląda na to, że działa dobrze i nie widziałem żadnych problemów z automatycznym formatowaniem, ale używam ReSharper, więc może to naprawi automatycznie! –
Używam programu ReSharper i nadal napotykam problem z automatycznym formatowaniem, więc nie jestem pewien, dlaczego nie dotykasz problemów z formatowaniem. Problem z automatycznym formatowaniem i pisaniem wielkimi literami występuje, gdy zmienne Razor-Razd pojawiają się w miejscach, w których formater wymusiłby pisanie małymi literami, takich jak nazwy znaczników HTML lub kod JS (głównie camelCase, w szczególności formater uruchamia się, gdy automatyczne wcięcie występuje ... Więc Chris, mam przeczucie, że mógłbyś mieć inny scenariusz? –