2016-08-04 9 views
2

Wie ein Modell-Klasse für ein JSON-Objekt wie erstellen:.net Mvc 4 Modell Bindung mit Sonderzeichen

{ "model" : { "@foo": "bar", "#baz": "fu" }} 

Wie ein Modell schreiben oder besser gesagt die Klassenvariablen deklarieren, wenn ich die json übergeben wollen model, mit den Sonderzeichen @ und # in ihren Variablennamen zu meinem Controller:

$http.post('@Url.Action("myController","test")', model, { headers: { 'Content-Type': 'application/json; charset=utf-8' } }) 

public class MyModel 
    { 
//  public string @foo { get; set; } 
//  publiC#bar { get; set; } 
    } 

public ActionResult myController(MyModel model) { 

      return View(); 
     } 

Es gibt zwei einfache Lösungen.

  1. iterieren Sie das Json-Objekt und ändern Sie die Variablennamen.
  2. post die json als String JSON.stringify(data) und serialisiert es an meinem eigenen

wie es weiter unten beschrieben wird:

public ActionResult myController(string model) 
{ 
    var ser = new System.Web.Script.Serialization.JavascriptSerializer(); 
    Dictionary<string, string> dictionary = ser.Deserialize<Dictionary<string, string>>(model); 

    // Do something with the dictionary 
} 

Antwort

1

Wenn Sie Json.NET verwenden, dann können Sie [JsonProperty] Attribut verwenden, um die Eigenschaft zu dekorieren Name:

[JsonProperty(PropertyName = "@foor")] 
public string Foo { get; set; } 

[JsonProperty(PropertyName = "#bar")] 
public Bar { get; set; } 
+1

Hallo. Ich habe deine Antwort angenommen, warte nur auf einen anderen Vorschlag. Aber deine ist perfekt, thx. – StellaMaris