Ho uno scenario in cui vorrei caricare gli script in base al tipo di richiesta. Ad esempio, supponiamo di avere questo codice:Section Script o normale <script> in base al tipo di richiesta
@section scripts {
<script>
$('#tabsContainer').InitializeTabs();
</scripts>
}
questo carica perfettamente bene quando voglio caricare l'intera pagina. Tuttavia, ho una cosa in cui l'utente può caricare anche parzialmente la pagina. Lo scenario è simile a questo:
public ActionResult Page() {
if (Request.IsAjax()) return PartialView();
return View()
}
Il problema è, se è caricata in parte, lo script non funziona perché gli script @section non funziona in parziale. Se lo metto fuori dagli script di sezione, non funziona a pieno schermo visto che ho i miei script in fondo, e sta cercando di eseguire lo script prima che vengano caricati i file JavaScript effettivi.
Mi chiedevo un buon modo per implementarlo. Posso spostare i miei script in cima alla pagina e questo dovrebbe risolvere tutti i problemi. Potrei anche avere 2 diversi script, ma questo potrebbe significare che devo scrivere lo stesso codice due volte.
Qualcuno sa un modo piacevole per implementare questo? Forse un helper HTML che carica lo script in @section scripts {} o in normali tag script a seconda del tipo di richiesta?
In sostanza, qual è il modo corretto di scrivere questo:
@if (!Request.IsAjaxRequest())
{
<text>
@section scripts
{
<script>
$(function() {
$("#tabs").tabs();
});
</script>
}
</text>
}
else
{
<text>
<script>
$(function() {
$("#tabs").tabs();
ga('set', 'page', '/new-page.html'); // Update Google Analytics
});
</script>
</text>
}
Grazie in anticipo per l'aiuto.
Gli script dovrebbero ** non ** essere parziali. Metti i tuoi script nella vista o nel layout –
Vorrei non essere d'accordo in questo caso. Certo, sono d'accordo che dovrebbero ** quasi mai ** essere in visione parziale. Tuttavia, avendo un _FullView_ che può essere visualizzato in _PartialView_, mi sembra che possa andare bene? Potresti forse definire un altro modo in cui posso $ ('# tabs'). Initialize() dopo che la vista è stata caricata (Se completa o parziale. E accanto ai metodi che ho postato sopra)? – FerX32
Aggiunto un esempio per illustrare ulteriormente il mio punto. – FerX32