Auf meiner Client-Seite ich einen Ajax-Aufruf wie unten habe:JsonResults gibt Enum-Wert statt String-Darstellung
$.ajax({
url: "Controller/ListResult",
type: 'POST',
contentType: "application/json;charset=utf-8",
data: JSON.stringify({
Id: ObjectId,
SessionKey: sessionManager.getSessionKey()
}),
dataType: "json",
success: function (result) {
var test = results;
}
}
});
im Controller habe ich eine Methode wie folgt:
[HttpPost]
public JsonResult ListResult(string Id, string SessionKey)
{
IBl biz = new BL();
var result = biz.GetResults(Id,SessionKey);
return Json(result);
}
Das Problem ist das das Ergebnis, dass der Controller zurückgibt, ist ein Objekt, das wenige Enum Eigenschaften (mit ihrer Zeichenfolgendarstellung als Wert) hat . Wenn es jedoch die ErfolgFunktion im Ajax-Aufruf erreicht, sind die Enums nicht mehr String-Darstellung, und stattdessen wurden sie irgendwie in ihre int-Werte konvertiert. Wie kann ich das vermeiden? und behalten Sie die Zeichenfolgendarstellung auf der Javascriptseite bei.
Was ist 'sessionManager.getSessionKey()'? –
@StephenMuecke, es ist eine interne Funktion zum Abrufen der Sitzung, aber dies sollte nichts beeinflussen. Weil es wie erwartet funktioniert. – Benjamin
Sie müssen ein anonymes Objekt zur Darstellung Ihrer Daten erstellen und 'ToString()' in den Enum-Eigenschaften verwenden (der 'JavascriptSerializer' serialisiert Enums auf ihre numerischen Werte und nicht auf ihre String-Darstellung) –