Feld im Modell ausblenden, wenn @ Json.Encode verwendet wird

9

In meiner ASP.NET MVC4-Anwendung habe ich ein Modell, das folgendermaßen definiert ist:

%Vor%

Wenn ich dieses Objekt mit ApiController zurückgebe, erhalte ich korrekte Objekte ohne mit JsonIgnore -Attribut, aber wenn ich versuche, dasselbe Objekt in der cshtml-Datei unter Verwendung von Code hinzuzufügen, bekomme ich all Felder.

%Vor%

Es sieht so aus, als ob @ Json.Encode diese Attribute ignoriert.
Wie kann das behoben werden?

    
Misiu 21.01.2014, 16:14
quelle

2 Antworten

15

Die von Ihnen verwendete Klasse System.Web.Helpers.Json basiert auf JavaScriptSerializer Klasse von .NET.

Die JsonIgnore -Eigenschaften, die Sie in Ihrem Modell verwendet haben, sind spezifisch für die Newtonsoft Json.NET-Bibliothek, die standardmäßig für die ASP.NET-Web-API verwendet wird. Deshalb funktioniert es nicht.

Sie könnten denselben JSON-Serializer in Ihren Razor-Ansichten verwenden, um mehr Konsistenz mit Ihrer Web-API zu erreichen:

%Vor%     
Darin Dimitrov 21.01.2014, 16:30
quelle
7

Sie können [ScriptIgnore] auch für Ihr Modell verwenden, z. B .:

%Vor%

Und rendern Sie wie Sie waren:

%Vor%     
hutchonoid 21.01.2014 16:34
quelle