Sto lavorando all'app Web in cui la pagina principale contiene due parti: il blocco costante che è sempre visibile e il blocco di informazioni costituito da una delle 3 viste parziali. Ognuna delle viste parziali appare come risultato della richiesta AJAX e viene caricata una sola volta (dopo che le finestre di commutazione sono fornite da jquery). Funziona bene ma ho avuto un problema.È corretto inserire JavaScript nelle viste parziali
Il codice html delle viste parziali contiene funzioni js che vengono utilizzate anche nel blocco costante e nel blocco informazioni. Quando la pagina viene caricata, queste funzioni possono "vedersi" e funziona, ma il resharper non trova le dichiarazioni delle funzioni e mi avvisa di ciò. Non riesco a risolvere il problema trasferendoli in un file js esterno a causa della sintassi del rasoio che può essere trovata nel loro codice.
Cosa posso fare con questo?
Grazie.
Aggiornamento:
Infine ho deciso di risolvere il problema che separa il mio codice js da vista. Quindi la nuova domanda era come includere la sintassi del rasoio nei file js o qual è l'alternativa accettabile. Le soluzioni popolari che ho trovato utilizzano variabili globali, attributi dei dati e quello che mi piace di più: la libreria RazorJS di John Katsiotis.
http://djsolid.net/blog/razorjs---write-razor-inside-your-javascript-files
spero che sta andando a lavoro stabile e rendere ReSharper felice.
Cheers!
Aggiornamento:
Dopo 3 anni ho ricordato questa domanda e ha deciso di aggiornarlo secondo la mia esperienza. In effetti ora preferirei non raccomandare l'uso di librerie aggiuntive per questo. Soprattutto se non sei l'unico membro del team di progetto ... È molto meglio se sei assicurato in tutte le tue librerie, sono supportate da creator e community e possono essere facilmente integrate nel tuo IDE (se usi la sintassi speciale ad esempio) . Anche tutti i ragazzi del tuo team dovrebbero essere consapevoli di come funziona. Quindi ora suggerirei di fare le seguenti cose:
- Tenere tutto il JS in file separati. Isolare il più possibile. Fornire l'API esterna per questo.
- Chiama le funzioni API dalle tue Visualizzazioni.
- Passa tutti gli URL generati da Razor, i messaggi di testo, le costanti come parametro di risorsa.
Ad esempio:
js di file:
$.api.someInitFunction = function(resources){ ... }
Vista:
<script>
$.api.someInitFunction({
urls: { myAction: '@Url.Action("MyAction", "MyController")' },
messages: { error: '@errorMessage' },
consts: { myConst: @myIntConst }
});
</script>
Non riuscivo a decidere cosa risposta è stata più utile per me :) – Tomy
Grazie e benvenuto StackOverflow :) –
È piacevole iniziare con un ricevimento così bello, molte grazie! – Tomy