0

我有以下方法:

    [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);
    }

所以我想将数据正确转换为 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);
4

1 回答 1

7

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

于 2013-09-23T11:25:43.987 回答