ASP.NET MVC controller actions that return JSON or partial html ASP.NET MVC controller actions that return JSON or partial html ajax ajax

ASP.NET MVC controller actions that return JSON or partial html


In your action method, return Json(object) to return JSON to your page.

public ActionResult SomeActionMethod() {  return Json(new {foo="bar", baz="Blech"});}

Then just call the action method using Ajax. You could use one of the helper methods from the ViewPage such as

<%= Ajax.ActionLink("SomeActionMethod", new AjaxOptions {OnSuccess="somemethod"}) %>

SomeMethod would be a javascript method that then evaluates the Json object returned.

If you want to return a plain string, you can just use the ContentResult:

public ActionResult SomeActionMethod() {    return Content("hello world!");}

ContentResult by default returns a text/plain as its contentType.
This is overloadable so you can also do:

return Content("<xml>This is poorly formatted xml.</xml>", "text/xml");


I think you should consider the AcceptTypes of the request. I am using it in my current project to return the correct content type as follows.

Your action on the controller can test it as on the request object

if (Request.AcceptTypes.Contains("text/html")) {   return View();}else if (Request.AcceptTypes.Contains("application/json")){   return Json( new { id=1, value="new" } );}else if (Request.AcceptTypes.Contains("application/xml") ||          Request.AcceptTypes.Contains("text/xml")){   //}

You can then implement the aspx of the view to cater for the partial xhtml response case.

Then in jQuery you can fetch it passing the type parameter as json:

$.get(url, null, function(data, textStatus) {        console.log('got %o with status %s', data, textStatus);        }, "json"); // or xml, html, script, json, jsonp or text

Hope this helpsJames


Another nice way to deal with JSON data is using the JQuery getJSON function. You can call the

public ActionResult SomeActionMethod(int id) {     return Json(new {foo="bar", baz="Blech"});}

Method from the jquery getJSON method by simply...

$.getJSON("../SomeActionMethod", { id: someId },    function(data) {        alert(data.foo);        alert(data.baz);    });