ASP.NET MVC:构建Json ActionResult的最佳C#方法

Did*_*xis 6 .net c# asp.net-mvc json asp.net-mvc-4

过去也曾提出类似的问题,但现在看起来有点过时了.我试图获得目前关于在ASP.NET MVC中构造JsonResult的最佳方法的一致意见.此问题的上下文是使用.NET 4/4.5和MVC 4中提供的最新方法

这是我多年来遇到的一些流行方法:

var json1 = new { foo = 123, bar = "abc" };

var json2 = new Dictionary<string, object>{ { "foo", 123 }, { "bar", "abc" } };

dynamic json3;
json3.foo = 123;
json3.bar = "abc";
Run Code Online (Sandbox Code Playgroud)

还请解释您首选方法的优缺点

Dar*_*rov 18

我个人用这个:

public class MyViewModel
{
    public int Foo { get; set; }
    public string Bar { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

然后:

public ActionResult Foo()
{
    var model = new MyViewModel
    {
        Foo = 123,
        Bar = "abc"
    };
    return Json(model, JsonRequestBehavior.AllowGet);
}
Run Code Online (Sandbox Code Playgroud)

优点:

  • 强大的打字
  • 没有魔法字符串
  • 重构友好
  • 单元测试友好
  • 代码很容易转换为新的Web Api控制器动作调用,保持前面的点是真的:

    public class ValuesController: ApiController
    {
        public MyViewModel Foo()
        {
            return new MyViewModel
            {
                Foo = 123,
                Bar = "abc"
            };
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)

缺点:尚未遇到过.

  • 当然,"强打字".在我(已经坏掉的)键盘上,`i`和`o`是彼此相邻的:-) (3认同)