Sto usando ASP.NET MVC e sto provando a generare un pezzo di javascript come parte del rendering della vista. Ho un modello che espone una serie di tipi semplici e vorrei generare un array javascript/json equivalente nella vista in modo che io possa agire su di esso usando jQuery. Quindi, dato il seguente modello:Genera array json raw in visualizzazione in ASP.NET MVC
public class Info {
public string Name {get;set;}
public int ID {get; set;}
}
public class InfoModel{
public Info[] InfoList {get;set;}
}
... Vorrei generare un array JavaScript simile a questo:
var infoList = [
{
Name = "...",
ID = 1
} ,
{
Name = "...",
ID = 2
},
....
{
Name = "...",
ID = N
}];
Esiste un modo piacevole e conciso per fare questo nella vista, ho sembra che abbia problemi con la codifica delle virgolette se provo a far generare al modello una rappresentazione json, quindi attualmente posso solo averla generata usando un codice spaghetti/classico di asp che preferirei sostituire con una bella copertina.
EDIT: Si noti che non sto cercando di avere un controller per restituire un JsonResult, voglio un modo per la mia vista di contenere un array javascript che viene generato dal mio modello in una singola riga di codice (se possibile)
EDIT: Ho ottenuto parte del modo, ma sembra essere in difficoltà con la codifica. Questo codice nella visualizzazione:
<script>
var list = <%: HtmlExtension.ToJson(Model.InfoList) %>;
</script>
(dove toJSON incapsula conversione in stringa tramite JavaScriptSerializer) uscite alcuni difetti di codifica:
var info = [{"Name":"Low End","ID":1}];
..che non è quello che cercavo. Ho potuto fare questo:
var info = <% Response.Write(HtmlExtension.ToJson(Model.InfoList)); %>;
che funziona, ma non sembra come lucido. Devo ignorare esplicitamente la codifica come mostrato (l'output è sano, non generato dall'utente, quindi potrebbe non essere un problema) o mi manca qualcos'altro che lo rende meno classico di asp?
SÌ! grazie Jonathan, il MvcHtmlString era la magia che stavo aspettando ... –
Sono stato in grado di utilizzare questa riga di codice nel mio file HTML del rasoio: MvcHtmlString.Create (Json.Encode (Modello)) – bkwdesign
Esattamente. Alla fine è 'MvcHtmlString' è la chiave per farlo. –