Im viewmodel-Objekt ist unten die Eigenschaft:
public IList<CollegeInformationDTO> CollegeInformationlist { get; set; }
In VIEW lautet Javascript wie folgt:
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.
});
Bitte führen Sie hier, wie ich JSON-Objekt in Javascript bekommen kann.
var obj = JSON.stringify('@Model.CollegeInformationlist');
so schrieb ich , sollte es in ein JSON-Objekt konvertiert werden und in der Lage sein, Ergebnisse zu liefern, wenn explizit.State
Eigenschaften geschrieben werden, aber es funktioniert nicht wie ein Weg. Es sieht so aus, als ob OBJECT in einen String-Typ konvertiert wurde.Antworten:
Sie könnten Folgendes verwenden:
var json = @Html.Raw(Json.Encode(@Model.CollegeInformationlist));
Dies würde Folgendes ausgeben (ohne Ihr Modell zu sehen, habe ich nur ein Feld eingefügt):
<script> var json = [{"State":"a state"}]; </script>
Geige arbeiten
AspNetCore
AspNetCore verwendet
Json.Serialize
intead vonJson.Encode
var json = @Html.Raw(Json.Serialize(@Model.CollegeInformationlist));
MVC 5/6
Sie können Newtonsoft dafür verwenden:
Dies gibt Ihnen mehr Kontrolle über die JSON-Formatierung, dh Einrücken wie oben, Camelcasing usw.
quelle
Json.Serialize
anstelle von verwendetJson.Encode
.@Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(Model, Newtonsoft.Json.Formatting.Indented))
JsonConvert.SerializeObject(Model, Newtonsoft.Json.Formatting.Indented, new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() })
Dies stellt auch die richtige JavaScript-CamelCase (oder ich sollte sagencamelCase
) für den serialisierten JSON sicher .In ASP.NET Core wird IJsonHelper.Serialize () zurückgegeben,
IHtmlContent
sodass Sie es nicht mit einem Aufruf von abschließen müssenHtml.Raw()
.Es sollte so einfach sein wie:
<script> var json = @Json.Serialize(Model.CollegeInformationlist); </script>
quelle
Nach Gebrauch Code
var json = @Html.Raw(Json.Encode(@Model.CollegeInformationlist));
Sie müssen verwenden
JSON.parse(JSON.stringify(json))
;quelle
JSON.stringify
undJSON.parse
richtig nacheinander? Es wäre nicht nötig und würde die Ressourcen verschwenden.JSON.parse(@Html.Raw(Json.Encode(@Model.CollegeInformationlist)))
sollte einfach funktionieren. Jemand kann testen und uns Bescheid geben. Aber jetzt benutze ich diesen Weg und arbeite für mich.Wenn Sie ein JSON-Objekt aus Ihrem Modell erstellen möchten, gehen Sie wie folgt vor:
foreach (var item in Persons) { var jsonObj=["FirstName":"@item.FirstName"] }
Oder verwenden Sie Json.Net , um json aus Ihrem Modell zu erstellen :
quelle
Übergeben Sie das Objekt vom Controller zur Ansicht, konvertieren Sie es in Markup ohne Codierung und analysieren Sie es in json.
@model IEnumerable<CollegeInformationDTO> @section Scripts{ <script> var jsArray = JSON.parse('@Html.Raw(Json.Encode(@Model))'); </script> }
quelle
JSON.parse
nacheinander setzen? Es wäre nicht nötig und würde die Ressourcen verschwenden.