Самый общий способ вернуть json из действия - просто вызвать метод Json ().
return Json(viewModel);
Если вы специально возвращаете данные для jqGrid, вы можете использовать свой собственный ActionResult.Вот что мы используем.У нас также есть метод расширения для перевода этого результата из нашей оболочки службы подкачки.
public class TableResult : ActionResult
{
public override void ExecuteResult(ControllerContext context)
{
context.HttpContext.Response.Write(ToJqGridJson());
}
public object ToJqGridJson()
{
return new {total = Total, page = Page, records = Records, rows = Rows};
}
public int Total { get; set; }
public int Records { get; set; }
public int Page { get; set; }
public object[] Rows { get; set; }
}
В контроллере:
return new TableResult() { ... };
или возвращаем queryResults.ToTableResult ();
Что касается будущего, даже не пытайтесь!В итоге у вас будет большой дизайн, и я гарантирую, что он не окупится.Мы выучили трудный путь и совсем недавно начали выбрасывать множество абстракций.Нет смысла писать код, если вы не знаете точно, как он будет использоваться в будущем.Кроме того, WCF можно легко заменить самим приложением MVC.MVC не должен возвращать только веб-сайты.Мы перешли на использование .net 4.0 javascript serializer + MVC + клиентский десериализатор javascript для предоставления веб-сервисов.Вы можете поделиться аутентификацией, которую вы уже написали для MVC, плюс все ваши фильтры и т. Д., И вам не нужно беспокоиться о настройке отвратительного беспорядка WCF.Посмотрите, куда движутся технологии: мобильные и интегрированные!Вы не собираетесь делать WCF на своем телефоне.Посмотрите на JSON, ATOM, RSS и т. Д.
http://ayende.com/Blog/archive/2011/02/23/flatten-your-architecture-simplicity-as-a-core-value.aspx