ja ogólnie okazało się, że dla kompleksu obiektów wszelkich starań, aby tylko szeregować tworząc tymczasowy „Between” obiektu:
na przykład o referencje I wykonaj następujące czynności. Tak naprawdę robię to w codebehind na mojej stronie modelu ASPX.
Spowoduje to utworzenie ładnego obiektu JSON. Zauważysz, że mogę nawet zmienić mój model, a strona nadal będzie działać. To kolejna warstwa abstrakcji między modelem danych a stroną. Nie sądzę, że mój kontroler powinien wiedzieć o JSON tak bardzo, jak to możliwe, ale ASPX "codebehind" z pewnością może.
/// <summary>
/// Get JSON for testimonials
/// </summary>
public string TestimonialsJSON
{
get
{
return Model.Testimonials.Select(
x => new
{
testimonial = x.TestimonialText,
name = x.name
}
).ToJSON();
}
}
W moim ASPX po prostu zrobić to w bloku:
var testimonials = <%= TestimonialsJSON %>;
// oh and ToJSON() is an extension method
public static class ObjectExtensions
{
public static string ToJSON(this Object obj)
{
return new JavaScriptSerializer().Serialize(obj);
}
}
Jestem gotowy na luz przeciwko tej propozycji ... to przyniesie ...
I m nie uzyskuję dostępu do danych, po prostu ponownie formatuję model dla widoku. Jest to logika "widoku modelu", a nie "modelu kontrolera".
Jakiego serializatora używasz? –
JsonResult to mój typ zwracany, więc zakładam, że jest to serializer, który jest domyślny w klasie kontrolera ASP.NET MVC 1.0. – JMP
Który jest JavaScriptSerializer. – womp