Asp.net mvc 在MVC中,当不使用ActionResult返回类型时,如何指定JSON序列化?

Asp.net mvc 在MVC中,当不使用ActionResult返回类型时,如何指定JSON序列化?,asp.net-mvc,json,asp.net-mvc-5,content-negotiation,Asp.net Mvc,Json,Asp.net Mvc 5,Content Negotiation,使用ASP.NET MVC 5,您可以跳过难看的“ActionResult”返回类型,而是指定一个“real”类。然而,MVC似乎希望将我的对象的.ToString()版本作为Content返回,而不是我想要的对象的JSON序列化版本-类似于ASP.NET MVC WebApi2 给定这个控制器。。。如何在不更改方法的情况下获得JSON结果 public class MyController : Controller { public Thing GetSomething() {

使用ASP.NET MVC 5,您可以跳过难看的“ActionResult”返回类型,而是指定一个“real”类。然而,MVC似乎希望将我的对象的
.ToString()
版本作为
Content
返回,而不是我想要的对象的JSON序列化版本-类似于ASP.NET MVC WebApi2

给定这个控制器。。。如何在不更改方法的情况下获得JSON结果

public class MyController : Controller
{
    public Thing GetSomething()
    {
        return new Thing { Name = "Justin_Example" };
    }
}

我不确定它是否是您所需要的,但您可以将返回类型设置为JsonResult。 以下是一个例子:

public JsonResult GetSomething()
{
    var thing = new Thing { Name = "Justin_Example" };
    return Json(thing , JsonRequestBehavior.AllowGet);
}

您可能可以在操作筛选器中执行此操作。等等,您是指MVC6还是MVC5?据我所知,MVC5不支持这一点,返回类似于
返回内容(…)的内容如果您认为它应该有效,您能否提供支持此用法的参考?MVC6有POCO控制器,这可能就是您所指的。是的,MVC5(因此是标记),我不相信返回复杂对象的能力意味着
。ToString()
是目标-这将是有史以来最糟糕的功能:)我怀疑这里的问题是,您在控制器中返回,您自己的类,其环境不知道如何处理。因此,它应用了一些“默认”行为。也许如果你序列化你的对象并返回字符串,你就可以发送它了。谢谢你的帖子——不过我要找的是不要明确地说
JsonResult
,然后使用Json方法——而是正确的类型。考虑单元测试(尽管这不是我的动机)