я вообще нашел, что для сложных объектов его лучше просто сериализации, создавая временный «Inbetween» объект:
, например, для свидетельств я следующее. Я действительно делаю это в коде для моей страницы модели ASPX.
Это создает приятный объект JSON. Вы заметите, что я могу даже реорганизовать свою модель, и страница все равно будет работать. Это просто еще один слой абстракции между моделью данных и страницей. Я не думаю, что мой контроллер должен знать о JSON как можно больше, но ASPX «codebehind», безусловно, может.
/// <summary>
/// Get JSON for testimonials
/// </summary>
public string TestimonialsJSON
{
get
{
return Model.Testimonials.Select(
x => new
{
testimonial = x.TestimonialText,
name = x.name
}
).ToJSON();
}
}
В моей ASPX я просто сделать это в блоке:
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);
}
}
Я готов к негативной реакции на это предложение ... принести его на ...
Я не получая доступа к данным, просто переформатируя модель для представления. Это логика «модели представления», а не логика «модель контроллера».
Какой сериализатор вы используете? –
JsonResult - это мой тип возврата, поэтому я предполагаю, что сериализатор по умолчанию используется в классе контроллера ASP.NET MVC 1.0. – JMP
Какой JavaScriptSerializer. – womp