Как класс My Asp.Net C # может возвращать формат json - PullRequest
16 голосов
/ 14 марта 2011

Как бы хотелось, чтобы класс возвращал формат json.

Этот метод отлично работает в контроллере, но когда я хочу добавить класс, объект Json, кажется, не существует.

 public JsonResult Test()
 {
      //Error   1   The name 'Json' does not exist in the current context   C:\inetpub\wwwroot\mvcinfosite\mvcinfosite\Validation\ValidationClass\BaseValidator.cs  66  20  mvcinfosite
      return Json(new { errMsg = "test" });
 }

Я хочу поместить этот код в простой класс.Я хочу иметь возможность вызывать этот метод во многих контроллерах.

Спасибо.

РЕДАКТИРОВАТЬ Это мой класс (где код не работает)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using mvcinfosite.Models;
using mvcinfosite.Base;
using System.Web.Mvc;

public class BaseValidator
{
     public JsonResult Test()
     {
         return Json(new { errMsg = "test" });
     }
}

Ответы [ 3 ]

23 голосов
/ 14 марта 2011

return Json(new { errMsg = "test"});

- это удобный метод на контроллере, эквивалентный

return new JsonResult(){
      Data = new { errMsg = "test"},
      JsonRequestBehavior = JsonRequestBehavior.DenyGet
};
21 голосов
/ 14 марта 2011

Json() - это метод на базовом контроллере, который возвращает JsonResult.Вам нужно выполнить сериализацию самостоятельно.

return new JavaScriptSerializer().Serialize(new { errMsg = "test" });

Вам нужно будет включить using System.Web.Script.Serialization.

0 голосов
/ 18 мая 2017

Для меня это сработало (помните об изменении типа возвращаемого значения на Object):

public Object Test()
{
      return new { errMsg = "test" };
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...