Reputation: 36111
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.
Upvotes: 2
Views: 8272
Reputation: 613
This question has long been answered (and accepted), but I wanted to pass along a response to a similar question that helped me. His answer takes advantage of MVC3/Razor syntax:
https://stackoverflow.com/a/7486214/249153:
In mvc3 with razor @Html.Raw(Json.Encode(object)) seems to do the trick.
Upvotes: 2
Reputation: 22036
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>
Upvotes: 7
Reputation: 121444
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 + "); }");
}
Upvotes: 2