将c#数据从实体框架转换为有效的json类型

use*_*552 -1 javascript c# asp.net-mvc serialization json

我有以下方法:

    [HttpPost]
    public ActionResult GetData()
    {
        var data= (dynamic)null;
        using (DBContext context = new DBContext())
        {
            data= context.MyObject.Where(i=> i.TypeId == 1).OrderBy(k => k.Name).Select(w => new
            {
                description = w.Description
            }).ToList();       
        }

        return Json(data, JsonRequestBehavior.AllowGet);
    }
Run Code Online (Sandbox Code Playgroud)

所以我想将数据正确转换为json对象,但我不确定我是否正确.返回的数据应该在javascript中使用.

我有很多谷歌,我找到了如下的例子,也许我应该做类似的事情,但我不知道如何:

var keyValues = new Dictionary<string, string>
               {
                   { "emailSend", textBox1.Text },
                   { "toEmail", textBox2.Text }
               };

JavaScriptSerializer js = new JavaScriptSerializer();
string json = js.Serialize(keyValues);
MessageBox.Show(json);
Run Code Online (Sandbox Code Playgroud)

Dar*_*rov 6

你不应该使用任何JavaScriptSerializer.就像Json你已经做的那样回归.这是从控制器操作向客户端发送JSON的正确方法.作为参数传递的模型将由框架自动序列化为JSON字符串.此外,您不需要进行设置,JsonRequestBehavior.AllowGet因为您的控制器操作使用[HttpPost]属性进行修饰,这意味着它只能使用POST动词调用,而不能使用GET调用.这仅对返回JsonResult的控制器操作是必需的,并且可以使用GET动词调用.