ViewModel替换复杂的匿名对象

本文关键字:对象 替换 复杂 ViewModel | 更新日期: 2023-09-27 18:09:53

我正在处理这个复杂的匿名对象

        var result = new 
            {    
                percentage = "hide",
                bullets = (string)null,
                item = new [] {
                    new {
                        value = 16,
                        text = "Day",
                        prefix = (string)null,
                        label = (string)null
                    },
                    new {
                        value = 41,
                        text = "Week",
                        prefix = (string)null,
                        label = (string)null
                    },
                    new {
                        value = 366,
                        text = "Month",
                        prefix = (string)null,
                        label = (string)null
                    }
                }
            };

我想把它转换成一个ViewModel,并从一个rest API返回JSON。

我想知道的是

  1. 如何将其表示为包含数组项条目的模型
  2. 一旦创建了模型的实例,我如何将数组项添加到数组中
  3. 模型是否需要一个构造函数来初始化数组?

ViewModel替换复杂的匿名对象

创建一个结构为:

的类
public class Result
{
    public Result()
    { 
        // initialize collection
        Items = new List<Item>();
    }
    public string Percentage { get; set; }
    public string Bullets { get; set; }
    public IList<Item> Items  { get; set; }
}
public class Item
{
   public int Value { get; set; }
   public string Text { get; set; }
   public string Prefix { get; set; }
   public string Label { get; set; }
}

然后把你的代码改成:

var result = new Result
            {    
                Percentage = "hide",
                Bullets = (string)null,
                Items = {
                    new Item {
                        Value = 16,
                        Text = "Day",
                        Prefix = (string)null,
                        Label = (string)null
                    },
                    new Item {
                        Value = 41,
                        Text = "Week",
                        Prefix = (string)null,
                        Label = (string)null
                    },
                    new Item {
                        Value = 366,
                        Text = "Month",
                        Prefix = (string)null,
                        Label = (string)null
                    }
                }
            };  
  1. 上面的结构。
  2. 按如下添加到集合中:

    result.Items.Add(new Item { Value = 367, Text = "Month", Prefix = (string)null, Label = (string)null });

  3. 我将像上面那样在构造函数中初始化集合。

要从控制器动作返回json,添加以下内容:

return Json(result, JsonRequestBehavior.AllowGet);