8

Sto cercando di aggiungere un po 'Proprietà modello nel mio JavaScript all'interno della mia pagina di contenuto:Perché non c'è intelligenza in ASP.Net MVC 2.0 quando si assegnano i valori del modello a JavaScript?

$(document).ready(function() { 
    createPager(1, <%=Model.TotalPages %>); 
    createUnprocessedPager(1, <%=Model.TotalUnprocessedPages %>); 
}); 

Qualcuno sa se questo è di progettazione? Non intendi combinare le proprietà del modello con JavaScript? O questo è un bug?

Funziona come previsto. Tuttavia, non ho alcun Intellisense all'interno dei tag <% ... %> durante la scrittura del codice. Se scrivo codice all'interno dei tag <script>, non c'è Intellisense. Se vado direttamente sotto il tag </script> e scrivi <% Model.... %> quindi boom, ho di nuovo Intellisense.

AGGIORNAMENTO: 22/10/2010

Basta leggere Scott Guthrie's latest blog post e sembra questa funzionalità è venuta fuori presto con il fino a venire rilascio di ASP.Net MVC 3 (forse per la beta così):

Nota: Visual Studio Codice/Markup Intellisense e Colorizzazione all'interno file Razor non sono ancora abilitati con la Beta all'inizio di questo mese. Lo visualizzerà in pochi settimane e supporterà il codice completo intellisense per HTML, JavaScript, CSS e codice C#/VB all'interno dei file Razor.

+6

Questo potrebbe non essere molto utile, ma ... funziona con il programma di risiquatura;) – Necros

risposta

1

Perderai Intellisense nelle visualizzazioni tra virgolette "" come attributi.

<input type="text" value="<%= DateTime.Today.ToShortDateString() %>" /> 

o se appare all'interno dei blocchi di Javascript.

<script type="text/javascript"> 
    <%= DateTime.Today.ToShortDateString() %> 
    </script> 

E 'mia opinione che ci dovrebbe essere Intellisense in questi scenari, quindi direi che è un bug e speriamo futuri aggiornamenti a Visual Studio sarà affrontare e risolvere questo.

5

Inoltre non è presente alcuna evidenziazione della sintassi. Non sono sicuro che sia un bug o una funzionalità, ma AFAIK, combinare il codice in questo modo non è una buona pratica. Generalmente javascript in linea non è una buona pratica, ma se si va con esso, combinare le proprietà del modello con esso e in seguito decidere di estrarre gli script in un file js separato, il codice si interromperà. Pertanto, è abbastanza comune per compilare i campi nascosti con i tuoi Proprietà modello e leggerli nel tuo js con jQuery, ad esempio:

<input type="hidden" id="valTotalPages" value="<%=Model.TotalPages %>" /> 
<input type="hidden" id="valTotalUnprocessedPages" value="<%=Model.TotalUnprocessedPages %>" /> 

... 

// in js 
$(document).ready(function() { 
    createPager(1, $("#valTotalPages").val()); 
    createUnprocessedPager(1, $("#valTotalUnprocessedPages").val()); 
}); 

Così la mancanza di evidenziazione della sintassi e IntelliSense potrebbe essere un bug, ma potrebbe anche essere un modo di scoraggiare alcuni modelli di codice.

+2

Nota: si perderà comunque intellisense quando si esegue 'value =" <% = Model.TotalPages%> "'. Ciò accade ogni volta che si inserisce '<% %>' tra virgolette. – Omar

+0

Ovunque intorno? O è un caso di ottenere un plugin per studi visivi? – GenericTypeTea

+0

L'introduzione di campi nascosti di estrazione non è una buona pratica. aumenta la dimensione della pagina. Preferirei vivere senza Intellisense. –

Problemi correlati