Ho una pagina dei risultati di ricerca in cui viene visualizzato un elenco di elementi formattati in un modo particolare utilizzando una vista Razor MVC.Evita la duplicazione della formattazione tra la vista Razor lato server e il modello jQuery lato client
@for (int i = 0; i < group.Count(); i++) {
<div class="result">
<div class="ordinal">@((i+1).ToString()).</div>
<div class="detail"><p>@group.ElementAt(i).Name</p></div>
</div>
}
Il cliente può inoltre filtrare i risultati utilizzando jQuery AJAX per retrive un nuovo insieme di dati come modelli JSON e jQuery per rendere il gruppo di risultati al posto dell'originale. Questo è il modello di jQuery:
<script id="resultTemplate" type="text/x-jquery-tmpl">
{{each(i, result) results}}
<div class="result">
<div class="ordinal">${i+1}.</div>
<div class="detail"><p>${name}</p></div>
</div>
{{/each}}
</script>
che è vincolato dopo AJAX chiamata:
var result = $("#resultTemplate").tmpl({ results: data });
$("#resultsColumn").empty().append(result);
Nota come ho dovuto duplicare il formattazione HTML per un risultato di ricerca sia in codice Razor lato server e client- codice jQuery laterale. Mi piacerebbe avere solo una versione del modello associato ai dati per ridurre le possibilità di discrepanze quando devo apportare modifiche.
Lettura Stephen Walter's Intro to jQuery Templates ha suggerito un'integrazione "migliore insieme" quando si utilizzano i modelli jQuery con ASP.NET MVC, quindi mi chiedevo se esiste una funzionalità che risolva lo scenario precedente.
Grazie.
Questo dovrebbe funzionare per i modelli semplici e sono d'accordo sul fatto che diventi non intenzionalmente per i modelli complessi (in realtà il mio modello jQuery usa la composizione, il precedente è un esempio semplificato). Sarebbe stato bello se i modelli di Razor e jQuery condividessero la sintassi comune, eccetto che infastidirebbe il pubblico di PHP;) e presto entrerebbero in limitazioni quando inizierai a utilizzare costrutti di linguaggio più specifici. – stefann