6

过去也有人问过类似的问题,但现在似乎有点过时了。我试图就在 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";

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

4

1 回答 1

18

我个人使用这个:

public class MyViewModel
{
    public int Foo { get; set; }
    public string Bar { get; set; }
}

进而:

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

优点:

  • 强类型
  • 没有魔线
  • 重构友好
  • 单元测试友好
  • 该代码可以很容易地转换为新的 Web Api 控制器操作调用,保持前面的观点正确:

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

缺点:还没遇到过。

于 2012-07-18T17:01:52.613 回答