views:

86

answers:

2

Hi,

I have a strongly typed View that accepts a Customer model, this customer model is a LINQ2SQL partial class that has a property called Journeys which returns all Journeys that are associated with this Customer.

I was wondering if it would be possible to access the Customer.Journeys property as a JSON object from within the Javascript.

Is this possible? If so how would I go about accessing it? Would I be best to create a FormViewModel and store the Customer details and Journey details as a JSON object there and pass it to the javascript function using something like:

<% MyJavascriptFunction(Model.JSONJourneys) %>

Or should I alter the Journeys partial class and add a .ToJson() property? Or something completely different?

Thanks.

A: 

How about exposing your Customer model through a Javascript view and loading it as a regular javascript file in your HTML?

Like this:

In your HTML view:

<script type="text/javascript" src="/customers/123/json">

And in your controller:

public ActionResult CustomerJson(int customerId)
{
   var serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
   var customer = Customer.Get(customerId);
   var serializedCustomer = serializer.Serialize(customer);
   return JavaScript(
      "function getCustomer() { return (" + serializedCustomer + "); }");
}
DrJokepu
+2  A: 

I would do this:

Using NewtonSoft Json Library, you can convert any C# model object to Json at the client end

http://james.newtonking.com/pages/json-net.aspx

in the view

<script>

var jsobject = <%= JsonConvert.SerializeObject(Model.Journeys) %>;

function myfunction (){ 
  //work with object

}

</script>
Richard