Подтвердить что ты не робот

Как получить объект 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.

4b9b3361

Ответ 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>
}