【问题标题】:ASP.NET MVC: Best C# method of building a Json ActionResultASP.NET MVC:构建 Json ActionResult 的最佳 C# 方法
【发布时间】:2012-07-18 16:56:49
【问题描述】:

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

还请说明您首选方法的优缺点

【问题讨论】:

  • 最适合您和您的团队的方法。这三种方法都产生相同的结果。
  • 改用 WebApi (asp.net/web-api)
  • -1 问题没有提到ActionResult
  • @richard 除了控制器返回一个 ActionResult 之外,它如何适用于在 C# 中构造 JSON?

标签: c# .net asp.net-mvc json asp.net-mvc-4


【解决方案1】:

我个人使用这个:

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"
            };
        }
    }
    

缺点:还没遇到过。

【讨论】:

  • 字符串类型还是强类型?
  • strong typing 当然。 io 在我的(已经坏掉的)键盘上彼此相邻:-)
  • 一个缺点是第一个代码块让其他人可以访问您的 Json 数据,因为您只需将其扔到页面上。 Web Api 不像这样具有 CORS 保护。因此,如果数据是敏感的,则最好使用 Web API 块。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-12
  • 1970-01-01
  • 2018-07-22
  • 2013-05-03
  • 2013-11-19
  • 2017-03-24
  • 2011-06-04
相关资源
最近更新 更多