如何在JsonResult中包含命名空间

时间:2014-06-20 22:43:41

标签: asp.net-mvc json

使用MVC4 c#环境。 我需要为我的jsonObject获取一个namspace。目前我正在使用以下结构。

   var results =
               Globals.StaticList
               .Where(x => x.LookupName.ToLower().Contains(searchString.ToLower()))
               .Select(x => new nvp()
               {
                   Name = x.LookupName,
                   ID = x.LookupName

               }).Distinct().ToArray();

          return new JsonResult() { Data = results.Take(10), JsonRequestBehavior = JsonRequestBehavior.AllowGet };

返回如下:

[{"Name":"Name 1","ID":"Name 1"},{"Name":"Name 2","ID":"Name 2"}]

问题是我希望它以

的形式返回
{"TheNameSpace": [{"Name":"Name 1","ID":"Name 1"},{"Name":"Name 2","ID":"Name 2"}]}

我的nvp类看起来像这样:

 [DataContract(Namespace = "TheNameSpace")]
public class nvp
{
    [DataMember]
    public string Name { get; set; }
    [DataMember]
    public string ID { get; set; }
}

我已经尝试过像这样的DataContractSerialization的一些不同变体..但是它失败了:

  var ms = new MemoryStream();
        var ser = new DataContractSerializer(typeof (nvp[]));
        ser.WriteObject(ms,results);
        var streamreader = new StreamReader(ms);
        return streamreader.ReadToEnd();

感谢任何帮助。 感谢

1 个答案:

答案 0 :(得分:1)

尝试:

   var results =
               Globals.StaticList
               .Where(x => x.LookupName.ToLower().Contains(searchString.ToLower()))
               .Select(x => new nvp()
               {
                   Name = x.LookupName,
                   ID = x.LookupName

               }).Distinct().ToArray().Take(10);

return new Json(new {TheNameSpace= results},JsonRequestBehavior = JsonRequestBehavior.AllowGet);

希望会有所帮助。