dsi
En el objeto viewmodel, a continuación se muestra la propiedad:
public IList<CollegeInformationDTO> CollegeInformationlist { get; set; }
En VER, javascript es el siguiente:
var obj = JSON.stringify('@Model.CollegeInformationlist');
alert(obj[1].State); //NOT WORKING, giving string char
$.each('@Model.CollegeInformationlist', function (i, item) {
var obj = JSON.stringify(item);
var r = $.parseJSON(obj);
alert(r.State); //just giving undefined.
});
Guíe aquí, cómo puedo obtener un objeto JSON en javascript.
hutconoide
Podrías usar lo siguiente:
var json = @Html.Raw(Json.Encode(@Model.CollegeInformationlist));
Esto daría como resultado lo siguiente (sin ver su modelo, solo he incluido un campo):
<script>
var json = [{"State":"a state"}];
</script>
AspNetCore
Usos de AspNetCore Json.Serialize
en lugar de Json.Encode
var json = @Html.Raw(Json.Serialize(@Model.CollegeInformationlist));
MVC 5/6
Puedes usar Newtonsoft para esto:
@Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(Model,
Newtonsoft.Json.Formatting.Indented))
Esto le da más control del formato json, es decir, sangría como arriba, camelcasing, etc.
-
No pude encontrar la referencia JSON, obteniendo un error como
The name 'Json' does not exist in the current context
si agrego,Newtonsoft.Json.
después,Encode
extraviado.– dsi
13/10/2014 a las 16:20
-
Para cualquiera que use AspNetCore, eso usa
Json.Serialize
en vez deJson.Encode
.– Verdadera Voluntad
10 mayo 2017 a las 14:49
-
Para versiones más nuevas de MVC 5/6
@Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(Model, Newtonsoft.Json.Formatting.Indented))
– Señor Darth Vader
14 de julio de 2017 a las 12:17
-
@ R2D2 un giro adicional a su sugerencia:
JsonConvert.SerializeObject(Model, Newtonsoft.Json.Formatting.Indented, new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() })
esto también asegura JavaScript CamelCase adecuado (o debería decircamelCase
) para el JSON serializado.– Al Dass
13 de marzo de 2018 a las 2:46
-
@Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(Model, Newtonsoft.Json.Formatting.Indented)) funcionó para mí
– smj
9 de mayo de 2018 a las 2:37
En ASP.NET Core, el IJsonHelper.Serialize() devoluciones IHtmlContent
por lo que no necesita envolverlo con una llamada a Html.Raw()
.
Debería ser tan simple como:
<script>
var json = @Json.Serialize(Model.CollegeInformationlist);
</script>
Federico Martín
Después de usar el códigovar json = @Html.Raw(Json.Encode(@Model.CollegeInformationlist));
necesitas usar JSON.parse(JSON.stringify(json))
;
-
Cosa pequeña, pero debe formatear su segmento de código en la segunda línea. Es una edición demasiado pequeña, por lo que no me deja hacerlo.
– Miguel
6 de abril de 2018 a las 18:11
-
Por que lo harias
JSON.stringify
yJSON.parse
justo uno tras otro? No sería necesario y desperdiciaría los recursos.– Pedro Iván
18 de noviembre de 2019 a las 10:20
-
Tener sentido. Necesito probar si funciona sin JSON.stringify. creo que solo
JSON.parse(@Html.Raw(Json.Encode(@Model.CollegeInformationlist)))
Deberia trabajar. Alguien puede probar y avisarnos. Pero ahora lo uso de esa manera y me funciona.– Federico Martins
29 de noviembre de 2019 a las 19:06
Si desea crear un objeto json a partir de su modelo, haga lo siguiente:
foreach (var item in Persons)
{
var jsonObj=["FirstName":"@item.FirstName"]
}
O usar Json.Net para hacer json a partir de tu modelo:
string json = JsonConvert.SerializeObject(person);
Pase el objeto del controlador a la vista, conviértalo en marcado sin codificación y analícelo en json.
@model IEnumerable<CollegeInformationDTO>
@section Scripts{
<script>
var jsArray = JSON.parse('@Html.Raw(Json.Encode(@Model))');
</script>
}
-
¿Por qué envolvería el resultado entre comillas y
JSON.parse
justo uno tras otro? No sería necesario y desperdiciaría los recursos.– Pedro Iván
18 de noviembre de 2019 a las 10:21
ciudadano
El siguiente código funcionó para mí.
var chartD = JSON.parse(JSON.stringify([@Json.Serialize(@Model)]));
-
¿Por qué envolvería el resultado entre comillas y
JSON.parse
justo uno tras otro? No sería necesario y desperdiciaría los recursos.– Pedro Iván
18 de noviembre de 2019 a las 10:21
su javascript no sabe cómo se ve su clase CollegeInformationDTO. En mi último trabajo definimos un objeto en el script con la misma estructura que el modelo y luego hicimos un jquery .map para mapear el modelo al objeto javascript. También asegúrese de que lo que está pasando a la vista sea una cadena JSON
– Matt corporal
13/10/2014 a las 15:58
Debe serializar su objeto Modelo en JSON. Debe crear un método (o propiedad) que devuelva ese resultado.
– musefan
13/10/2014 a las 16:00
¿Puedes compartirme algunas cosas para hacer esto? aquí, escribí
var obj = JSON.stringify('@Model.CollegeInformationlist');
por lo tanto, debería convertirse en un objeto JSON y poder dar resultados cuando se escribe explícitamente.State
propiedad, pero no funciona como una forma. Parece que OBJECT se convierte en tipo de cadena.– dsi
13/10/2014 a las 16:05