我的Asp.Net C#类如何返回json格式

Jea*_*ois 16 c# asp.net-mvc-2

如何返回一个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" });
 }
Run Code Online (Sandbox Code Playgroud)

我想将该代码放在一个简单的类中.我希望能够在许多控制器中调用此方法.

谢谢.

编辑
这是我的班级(代码不起作用的地方)

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" });
     }
}
Run Code Online (Sandbox Code Playgroud)

jbt*_*ule 24

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

是一种与Controller相当的便捷方法

return new JsonResult(){
      Data = new { errMsg = "test"},
      JsonRequestBehavior = JsonRequestBehavior.DenyGet
};
Run Code Online (Sandbox Code Playgroud)

  • @ Jean-Francois没关系,只是两个答案都会返回非常不同的结果,@ Ryan的答案会返回一个字符串,如果你只是因为一个动作方法而返回它,这是不理想的,但如果你需要更多的想法做一些与MVC模式无关的事情. (3认同)

Rya*_*yan 22

Json()是基本控制器上返回JsonResult的方法.您需要自己进行序列化.

return new JavaScriptSerializer().Serialize(new { errMsg = "test" });
Run Code Online (Sandbox Code Playgroud)

你需要包括using System.Web.Script.Serialization.