【发布时间】: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