web-dev-qa-db-fra.com

Comment obtenir un objet JSON à partir d'un objet Razor Model en javascript

Dans l'objet viewmodel, la propriété est la suivante:

  public IList<CollegeInformationDTO> CollegeInformationlist { get; set; }

Dans VIEW, javascript est le suivant:

   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.
    });

S'il vous plaît guider ici, comment je peux obtenir un objet JSON en javascript.

54
dsi

Vous pouvez utiliser les éléments suivants:

var json = @Html.Raw(Json.Encode(@Model.CollegeInformationlist));

Cela produirait ce qui suit (sans voir votre modèle, je n’ai inclus qu’un champ):

<script>
    var json = [{"State":"a state"}];   
</script>

Fiddle au travail

AspNetCore

AspNetCore utilise Json.Serialize au lieu de Json.Encode

var json = @Html.Raw(Json.Serialize(@Model.CollegeInformationlist));

MVC 5/6

Vous pouvez utiliser Newtonsoft pour cela:

    @Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(Model, 
Newtonsoft.Json.Formatting.Indented))

Cela vous donne plus de contrôle sur le formatage JSON, c'est-à-dire indentez comme ci-dessus, camelcasing etc.

112
hutchonoid

Après utilisation, codevar json = @Html.Raw(Json.Encode(@Model.CollegeInformationlist));

Vous devez utiliser JSON.parse(JSON.stringify(json));

2

Dans ASP.NET Core, le IJsonHelper.Serialize () renvoie IHtmlContent. Il n'est donc pas nécessaire de l'envelopper avec un appel à Html.Raw().

Cela devrait être aussi simple que:

<script>
  var json = @Json.Serialize(Model.CollegeInformationlist);
</script>
2
Rob Mensching

Si vous voulez créer un objet json à partir de votre modèle, procédez comme suit:

  foreach (var item in Persons)
   {
    var jsonObj=["FirstName":"@item.FirstName"]
   }

Ou utilisez Json.Net pour créer un json à partir de votre modèle:

string json = JsonConvert.SerializeObject(person);
1
M.Azad

Passez l'objet du contrôleur à la visualisation, convertissez-le en balisage sans l'encodage et analysez-le en json.

@model IEnumerable<CollegeInformationDTO>

@section Scripts{
    <script>
          var jsArray = JSON.parse('@Html.Raw(Json.Encode(@Model))');
    </script>
}
1
Aryan Firouzian