【问题标题】:My JsonResult contains values without field names我的 JsonResult 包含没有字段名称的值
【发布时间】:2012-01-18 04:28:11
【问题描述】:

从底部生成的 JSON 数组来看,这里的问题是不言而喻的。从我的代码中,我无法确定为什么输出不包含字段名称(例如“dma”:“Albany-Schenectady-Troy”,而不仅仅是“Albany-Schenectady-Troy”)。有人能找出问题所在吗?

型号

    public IEnumerable<EstimateDetailsModel> GetEstimateDetails(int id)
    {
        var estimateDetails = from e in db.Estimates
                              join es in db.EstimateStations on e.EstimateID equals es.EstimateID
                              join s in db.Stations on es.StationID equals s.StationID
                              join m in db.Markets on s.MarketID equals m.MarketID
                              where e.EstimateID == 1
                              select new EstimateDetailsModel { Dma = m.DmaName, CallSign = s.CallSign, Description = s.StationDescription };
        return estimateDetails;

    }

控制器

   public JsonResult EstimateDetails(int id)
    {
        var details = estimatesRepository.GetEstimateDetails(id);
        return this.Json(new { details = details }, JsonRequestBehavior.AllowGet);
    }

生成的 JSON

{"details":[["Albany-Schenectady-Troy","WRGB","WRGB (CBS) Schenectady"],["Albany-Schenectady-Troy","WTEN","WTEN (ABC) Albany "],["Albany-Schenectady-Troy","WXXA","WXXA (Fox) Albany "],["Atlanta","WGCL","WGCL (CBS) Atlanta "],["Atlanta","WXIA","WXIA (NBC) Atlanta "],["Austin","KXAN","KXAN (NBC) Austin "],["Austin","KVUE","KVUE (ABC) Austin "],["Baltimore","WMAR","WMAR (ABC) Baltimore "],["Baltimore","WBAL","WBAL (NBC) Baltimore"],["Baltimore","WJZ ","WJZ  (CBS) Baltimore "],["Baltimore","WBFF","WBFF (Fox) Baltimore "]]}

编辑 - 这是我的 EstimateDetailsModel 类

public class EstimateDetailsModel : IEnumerable<string>
{
    public string Dma { get; set; }

    public string CallSign { get; set; }

    public string Description { get; set; }

    public IEnumerator<string> GetEnumerator()
    {
        yield return Dma;
        yield return CallSign;
        yield return Description;
    }

    System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
    {
        return this.GetEnumerator();
    }
}

【问题讨论】:

  • 您的 EstimateDetailsModel 类是否可序列化?并且可能与 stackoverflow.com/questions/6020889/… 重复
  • @Jirapong 我认为是,但不确定。请参阅上面的编辑。
  • 从您的模型中删除所有枚举器代码。
  • @JoeTuskan - 就是这样。您想提交您的评论作为答案,以便我为您提供信用吗?

标签: c# asp.net-mvc json


【解决方案1】:

您需要从模型中删除枚举器代码。它覆盖了默认行为。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-31
    相关资源
    最近更新 更多