JSON就像动态对象数组一样

时间:2014-01-02 13:46:23

标签: c# asp.net-mvc

我想创建一个动态对象数组,类似于JSON模式。我使用它来允许我的Breadcrumb类接受定义输出特性的论证。我认为它看起来像这样

breadcrumbs.Add(new Breadcrumb() { 
    Title = "Page name", 
    Attributes = { class = "myclass", data-info="info stuff" } 
});

当我显示breadcrum以输出类似这样的内容时,我会迭代遍历这个数组

<a href="" title="Page name" class="myclass" data=info="into stuff">...</a>

问题是我是否可以动态地执行此操作而无需创建锅炉板代码,即BreadcrumAttribute,可以指定属性名称,然后指定数据。

我在MVC.NET的其他地方看到了类似的模式,但不记得它在哪里......

2 个答案:

答案 0 :(得分:4)

你可以使用这样的匿名类型:

breadcrumbs.Add(new Breadcrumb() { 
    Title = "Page name", 
    Attributes = new { @class = "myclass", datainfo="info stuff" } 
});

data-info不允许作为属性名称,因此我将其更改为datainfo,您也可以将其命名为data_info

或将其定义为Dictionary<string,string>并使用它:

breadcrumbs.Add(new Breadcrumb() { 
    Title = "Page name", 
    Attributes = new Dictionary<string, string>() { { "class", "myclass" }, { "data-info", "info" } }
});

答案 1 :(得分:1)

Make Breadcrumb.Attributes Dictionary

class Breadcrumb {
    public string Title;
    public Dictionary<string,string> Attributes;
}

然后..

        var breadcrumbs = new List<Breadcrumb>
            {
                new Breadcrumb()
                    {
                        Title = "Page name",
                        Attributes =
                            new Dictionary<string, string>
                                {
                                    {"class", "myclass"}, 
                                    {"data-info", "info stuff"}
                                }
                    }
            };