2012-09-10 5 views
5

Eventuali duplicati:
using razor within javascriptCome si usano i valori del rasoio in una funzione javascript?

vorrei mettere un valore siimple dal modello in una pagina rasoio e usarlo come un valore costante in una funzione javascript. Ad esempio

<script> var myValue = @Model.myRecord.Count();</script> 

in modo che myValue = il numero di record nel mio modello. Sto usando myRecord.Count come esempio, potrebbe essere qualsiasi valore dal mio modello.

È possibile?

TIA J

OK mi sono imbattuto nel seguente soluzione:

<script> var myValue = @(Model.myRecord.Count())</script> 

Basta mettere inthe parentesi in più ha aiutato.

+2

sì è possibile. Stai affrontando errori? – Shyju

+1

Questo codice dovrebbe funzionare. Qual è l'errore? – Paul

risposta

8

Certo, assicurati di codificarlo correttamente. Per esempio si potrebbe JSON codificare l'intero modello in sé:

@model IEnumerable<MyViewModel> 
<script type="text/javascript"> 
    var model = @Html.Raw(Json.Encode(Model)); 
    // at this stage the model javascript variable represents the JSON encoded 
    // value of your server side model so that you can access all it's properties: 
    alert(model.length); 
</script> 

o:

alert(model[2].Foo.Bar); 

o qualsiasi altra cosa.

Ma se vi interessa soltanto il numero di elementi all'interno del modello (se questo modello rappresenta un insieme):

var count = @Html.Raw(Json.Encode(Model.Count())); 
alert(count); 
2

assicurarsi che questo è in un file Razor:

<script> var myValue = @Model.myRecord.Count();</script> 

Se è in solo un file js, il motore di Razor non verrà eseguito il codice a tutti.

Problemi correlati