ich eine Klasse, die von Liste erbt und ergänzt diese Basisklasse einige weitere Eigenschaften wie folgt:Zugriff auf erweiterten Eigenschaften eines List-Klasse von JavaScript
public class MyNewList: List<string>
{
public string MyNewProperty { get; set; }
}
Ich habe eine MVC-Controller, die diese Art von Klasse zurückgibt :
public JsonResult GetModel()
{
var model = new MyNewList() { "1", "2", "3" };
model.MyNewProperty = "I want to be shown!!!";
return Json(model);
}
Mein Problem ist, dass, wenn ich einen ajax-Aufruf an den Server und erhalten so eine Klasse zu machen, ich habe keinen Zugriff auf MyNewProperty. Es gibt immer undefined für MyNewProperty, aber JavaScript behandelt das Objekt als Liste:
$http(...
function success(result) {
console.log(result) // ["1", "2", "3"]
console.log(result.myNewProperty); // undefined
}
Ich weiß, dass es wird vorgeschlagen, dass wir nicht von List-Klasse erben, aber dies ist eine vorhandene Klasse und Logik im Projekt und ich kann es nicht ändern. Ich muss einen Weg finden, dieses Objekt trotzdem an JavaScript zu senden.
Könnte mir jemand dabei helfen?
Danke für die Antwort. Aber, wie ich am Ende meiner Frage erwähnt habe, kann ich die Struktur der Klasse für Legacy-Zwecke nicht ändern. Ich habe keine andere Wahl, als von der List-Klasse zu erben. – hosjay
können Sie die Controller-Methode ändern? Wenn einige Änderungen in der Controller-Methode vorgenommen werden, kann dies erreicht werden – Paarth
Ja, das kann den Job machen. Vielen Dank. Allerdings suche ich immer noch nach einer besseren Antwort, da ich in diesem Fall jede einzelne Eigenschaft eingeben und ausfüllen muss, was zu Duplikaten/Inkonsistenzen führt, wenn ich zufällig vergess, einer Eigenschaft einen Wert zu geben. Ansonsten denke ich, das ist der Weg. Vielleicht könnte ich mein Problem leichter lösen, wenn ich der MyNewList-Klasse ein spezielles Attribut hinzufügen könnte ... – hosjay