【问题标题】:Control the order of json data columns returned in the Json() method in ASP.NET MVC控制 ASP.NET MVC 中 Json() 方法返回的 json 数据列的顺序
【发布时间】:2014-05-26 11:08:46
【问题描述】:

我有一个表 Articles 有以下列:

ID, Title, Excerpts, Content

对应的MVC模型类:

public class Articles
{
    public int id { get; set; }
    public string Title { get; set; }
    public string Excerpts { get; set; }
    public string Content { get; set; }
}

我有一个存储过程,它以用户在另一个表中配置的特定列顺序返回来自Articles 表的数据。例如,如果列的顺序为Title, ID, Content, Excerpts,则存储过程将返回结果集,如下所示:

Title   ID  Content Excerpts
Data    1   Data    Data
Data    2   Data    Data
....

我将上述存储过程的结果集存储在 Articles 对象的 List 中,并使用 return Json() 将其转换为 json,并使用 Knockout 将其绑定到屏幕中。

我面临的问题是,转换为json 格式后的数据保留了在Articles MVC model class 中声明的列顺序,而不是从存储过程返回的方式。如果我按以下顺序声明Articles 类的属性,则转换后的json 将根据类中声明的属性顺序采用列顺序:

public class MTB_Articles
{
    public string Title { get; set; }
    public string Content { get; set; }
    public string Excerpts { get; set; }
    public int ID { get; set; }
}

在上述情况下,数据以Title, Content, Excerpts, ID 的顺序绑定在屏幕中。我想要的只是格式化json 数据,其格式与从存储过程返回的方式相同。我们怎样才能做到这一点?

【问题讨论】:

  • 请记住,Json 根据定义是一组无序的名称/值对。也许您可以修改您的 Knockout 绑定逻辑并改用类似的东西? var parsedJson = JSON.parse(yourJson); viewModel.myPropoerty(parsed.jsonProp);
  • @MaxS-Betclic 正如你所说,我已经通过改变淘汰赛中的绑定逻辑解决了这个问题,但我在问题中提出的问题,无论如何都可能吗?
  • 很高兴看到它有所帮助。好吧,正如我所说,Json 已构建为一组无序的名称/值对。如果你试图改变这种行为,那么它就不再是 Json 了。您可以做的是创建自己的类似 Json 的字符串,而不是使用 return Json(),但我不会鼓励您这样做! ;-)

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


【解决方案1】:

这在 WCF 数据合同中对我有用。感谢您的提示

[DataMember(Order = 0)]

public string OrderID { get; set; }

[DataMember(Order = 1)] 

public string OrderDate { get; set; }

【讨论】:

    猜你喜欢
    • 2013-10-27
    • 2011-12-30
    • 2011-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-28
    • 2017-01-17
    相关资源
    最近更新 更多