Как получить объект JSON из объекта Razor Model в javascript
В объекте viewmodel ниже свойство:
public IList<CollegeInformationDTO> CollegeInformationlist { get; set; }
В VIEW, javascript выглядит следующим образом:
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.
});
Пожалуйста, расскажите, как я могу получить объект JSON в javascript.
Ответы
Ответ 1
Вы можете использовать следующее:
var json = @Html.Raw(Json.Encode(@Model.CollegeInformationlist));
Это выведет следующее (не видя вашу модель, я включил только одно поле):
<script>
var json = [{"State":"a state"}];
</script>
Рабочая скрипка
AspNetCore
AspNetCore использует Json.Serialize
intead Json.Encode
var json = @Html.Raw(Json.Serialize(@Model.CollegeInformationlist));
MVC 5/6
Вы можете использовать Newtonsoft для этого:
@Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(Model,
Newtonsoft.Json.Formatting.Indented))
Это дает вам больший контроль над форматированием json, т.е. Выравнивание, как указано выше, верблюд и т.д.
Ответ 2
Если вы хотите сделать объект json из модели yor, выполните следующие действия:
foreach (var item in Persons)
{
var jsonObj=["FirstName":"@item.FirstName"]
}
Или используйте Json.Net, чтобы сделать json из вашей модели:
string json = JsonConvert.SerializeObject(person);
Ответ 3
После использования кода var json = @Html.Raw(Json.Encode(@Model.CollegeInformationlist));
Вам нужно использовать JSON.parse(JSON.stringify(json))
;
Ответ 4
В ASP.NET Core IJsonHelper.Serialize() возвращает IHtmlContent
поэтому вам не нужно оборачивать его вызовом Html.Raw()
.
Это должно быть так просто, как:
<script>
var json = @Json.Serialize(Model.CollegeInformationlist);
</script>
Ответ 5
Передайте объект из контроллера для просмотра, преобразуйте его в разметку без кодирования и проанализируйте его в json.
@model IEnumerable<CollegeInformationDTO>
@section Scripts{
<script>
var jsArray = JSON.parse('@Html.Raw(Json.Encode(@Model))');
</script>
}