C# 返回集合属性的自定义WebConfig节

C# 返回集合属性的自定义WebConfig节,c#,asp.net,C#,Asp.net,我在访问my pages元素的属性集合属性“name”时遇到问题。Pages有一个具有属性的页面集合字段。有人可以看看我的代码,告诉我如何在每个页面上都有一个名称属性的页面集合,并访问它的值。目前,我的代码只返回没有任何错误的页面加载,所以我不知道发生了什么以及如何获取属性字段 <configSections> <sectionGroup name="site" type="MyProject.Configuration.Site"> <section

我在访问my pages元素的属性集合属性“name”时遇到问题。Pages有一个具有属性的页面集合字段。有人可以看看我的代码,告诉我如何在每个页面上都有一个名称属性的页面集合,并访问它的值。目前,我的代码只返回没有任何错误的页面加载,所以我不知道发生了什么以及如何获取属性字段

<configSections>
  <sectionGroup name="site" type="MyProject.Configuration.Site">
    <section name="pages" type="MyProject.Configuration.Pages"/>      
  </sectionGroup>  
</configSections>


<site>
  <pages>
    <page name="test">        
    </page>
  </pages>    
</site>
访问我的属性的代码:

Pages pageSettings = ConfigurationManager.GetSection("site/pages") as Pages;
lblPage.Text = pageSettings.Page[0].Name;

问题是您的节元素应该是站点,而不是页面:

public class Site: ConfigurationSection
{
    [ConfigurationProperty("pages")]
    public PageCollection Page
    {
        get
        {
            return base["pages"] as PageCollection;
        }
    }
}
更新

事实证明,有几个问题需要解决:

1) 需要将web.config更改为节而不是节组,并且应删除pages元素:

  <configSections>
    <section name="site" type="MyProject.Configuration.Site, MyProject.Configuration">
    </section>
  </configSections>
3) PageCollection构造函数需要删除其代码

    public PageCollection()
    {
    }
4) 需要从PageCollection中删除name属性,或者至少将其标记为不需要

5) 检索设置的调用现在是:

Site site = ConfigurationManager.GetSection("site") as Site;

我已经对此进行了测试,并验证了这些更改将在配置中成功读取。

问题在于您的节元素应该是站点,而不是页面:

public class Site: ConfigurationSection
{
    [ConfigurationProperty("pages")]
    public PageCollection Page
    {
        get
        {
            return base["pages"] as PageCollection;
        }
    }
}
更新

事实证明,有几个问题需要解决:

1) 需要将web.config更改为节而不是节组,并且应删除pages元素:

  <configSections>
    <section name="site" type="MyProject.Configuration.Site, MyProject.Configuration">
    </section>
  </configSections>
3) PageCollection构造函数需要删除其代码

    public PageCollection()
    {
    }
4) 需要从PageCollection中删除name属性,或者至少将其标记为不需要

5) 检索设置的调用现在是:

Site site = ConfigurationManager.GetSection("site") as Site;

我已经对此进行了测试,并验证了这些更改将成功地在配置中读取。

我已经纠正了这一点,但仍然没有获得collectionI的属性值。我已经更新了代码,它可以正常工作,除了在类指令中的PageCollection类。BaseAdd(元素)不起作用,但是如果我删除它,它就会起作用。你知道如何修复我的代码,这样我就可以使它起作用吗properly@KDM:类指令(又名构造函数)中不应包含任何代码。配置处理将自动添加适当的页面元素,所以你不需要这么做。好的,谢谢你,非常感谢你的帮助祝你新年快乐,伙计。我纠正了这一点,但我仍然没有得到集合的属性值。我更新了代码,它可以工作,除了在类指令中的PageCollection类。BaseAdd(元素)不起作用,但是如果我删除它,它就会起作用。你知道如何修复我的代码,这样我就可以使它起作用吗properly@KDM:类指令(又名构造函数)中不应包含任何代码。配置处理将自动添加适当的页面元素,因此您无需这样做。好的,谢谢您的帮助,非常感谢您的帮助,祝您新年快乐