Utilizzo il motore di visualizzazione Razor ASP.Net MVC 3.MVC 3 Vista rasoio: generazione di JavaScript da un valore di modello booleano
Ho un obbligo di generare codice JavaScript nella mia vista in base a un valore nel mio modello di vista. Il valore che devo usare è un valore booleano, per questo esempio lo chiamiamo IsSet
.
Quindi quello che voglio fare è creare un booleano JavaScript basato su questo valore che posso usare nello script in seguito.
Tenete presente che per tutti al di sotto esempi che ho questo pezzo di codice nella parte superiore del mio punto di vista ...
@{ string IsSet = Model.IsSet ? "true" : "false"; }
NOTA: Tutti gli esempi che seguono sono JavaScript.
Primo tentativo ...
var IsSet = @(IsSet);
... questo in realtà funziona, il problema è si rompe l'auto-formattazione (CTRL + E, D) in VS 2010 a causa di mal formattato JavaScript - come ci si potrebbe aspettare, e questo non è accettabile.
Secondo tentativo ...
var IsSet = "@(IsSet)";
... Lo so, JavaScript è intelligente, che si auto-analizzare la mia stringa quando necessario. Ooops, ho dimenticato che si tratta di un tipo di stringa e qualsiasi cosa diversa da vuota valuta true.
terzo tentativo ...
var IsSet = Boolean("@(IsSet)");
.... sicuramente questo funzionerà ... no, convertire stringa non vuota su true nuovo (male parser!)
Quarto tentare ...
var IsSet = "@(IsSet)" === "true";
Finalmente qualcosa che funziona, ma non sembra grande per me.
Lo userò se necessario, ma alla fine la mia domanda è: esiste un modo migliore per gestire questo tipo di situazione? Forse, il comportamento indesiderato nel mio primo tentativo è solo qualcosa che Microsoft potrebbe aver trascurato?
Se qualcuno ha un bel quinto tentativo per me, sarebbe bello.
La cosa importante per me è che l'auto-formattazione in VS 2010 non rompe
Grazie
Dovrei essere d'accordo con il tuo primo tentativo - che mi sembra il più naturale per me, dato che non stai stringendo e poi lanci qualcosa che era già un Boolean in primo luogo! Ho usato questa tecnica molto nel mio codice Razor/JS e sembra funzionare bene, e non ho riscontrato alcun problema con la formattazione automatica, ma uso ReSharper in modo forse che lo risolva automaticamente! –
Uso ReSharper e continuo a riscontrare problemi di formattazione automatica, quindi non sono sicuro che sia il motivo per cui non si verificano problemi di formattazione. Il problema della formattazione automatica e della maiuscola si verifica quando le variabili del Razor con cassa Pascal vengono visualizzate in punti in cui il formattatore applica la denominazione minuscola, come i nomi dei tag HTML o il codice JS (prevalentemente CamelCase; in particolare, il formattatore viene attivato quando viene indentata automaticamente si verifica ... Quindi Chris, ho l'impressione che potresti aver avuto uno scenario diverso? –