I ran into a situation where I found a need for a compound class that contained bits and pieces from quite a few other classes. The class would only be used for pushing data to the front end as a JSON formatted response in this rather special scenario. Rather than defining a new model/class I found that you can use an anonymous class and serialize it.
A brief note on the missing [DataContract]/[DataMember] and [Serializable] attributes, they are not needed for serializing public fields or properties in .NET 3.5 SP1.
A brief note on the missing [DataContract]/[DataMember] and [Serializable] attributes, they are not needed for serializing public fields or properties in .NET 3.5 SP1.
Here are the  predefined contrived classes
namespace MvcApplication1.Models
{
    public class Contact
    {
        public string Name { get; set; }
        public string PreferedEmail { get; set; }
    }
}
namespace MvcApplication1.Models
{
    public class ContactDetails
    {
        public string[] Emails { get; set; }
    }
}
controller
using System.Web.Mvc;
using MvcApplication1.Models;
using System.Web.Script.Serialization;
namespace MvcApplication1.Controllers
{
    public class HomeController : Controller
    {
        /// 
        /// Shows serializing a new anonymous class that contains some preexisting classes
        /// And serializing this using the JavaScriptSerializer
        ///  
        /// and view.
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<dynamic>" %> <%= ViewData["Json"]%>
and the serialized data looks like this
{"MyContact":{"Name":"Donald Duck","PreferedEmail":"donaldduck@disney.com"},"MyContactDetails":{"Emails":["donald@disney.com","unclescroogenephew@scrooge.com"]}}
 
 
No comments:
Post a Comment