Web.config ASP.NET MVC Razor项目中的自定义XML部分

时间:2014-03-08 14:32:55

标签: c# xml asp.net-mvc asp.net-mvc-4 razor

自定义XML:

<BrowsableGroups>
  <BrowsableGroup Name="CSS">
    <Path Type="directory" Value="Content"/>
    <Path Type="file" Value="Content/test.css"/>
  </BrowsableGroup>
  <BrowsableGroup Name="CSHTML">
    <Path Type="directory" Value="Views/Home"/>
    <Path Type="directory" Value="Views/Admin"/>
  </BrowsableGroup>
</BrowsableGroups>

代码:这是我现在使用的代码,它使用一个单独的xml文件,使用Linq to XML,效果很好。但要求是在Web.Config中包含此部分。 我已经尝试了超过4天,但没有完全做到。

 public class BrowsableGroups  
        {
            public List<BrowsableGroup> Groups { get; set; }

            public static List<BrowsableGroup> GetAllBrowsablePaths()
            {
                XDocument document = XDocument.Load(System.Web.HttpContext.Current.Server.MapPath("~/settings.xml"));

                var groups = document.Descendants("BrowsableGroup")
                    .Select(p => new BrowsableGroup()
                    {
                        Name = p.Attribute("Name").Value,
                        Paths = p.Elements("Path").Select(m => new Path() { Type = m.Attribute("Type").Value, Value = m.Attribute("Value").Value }).ToList()
                    }).ToList();
                return groups;
            }
        }

        public class BrowsableGroup 
        {
            public string Name { get; set; }
            public List<Path> Paths { get; set; }
        }

        public class Path 
        {
            public string Type { get; set; }
            public string Value { get; set; }
        }

任何帮助都非常感激。

1 个答案:

答案 0 :(得分:2)

自定义配置部分非常容易创建。有大量关于如何在Google上进行此操作的示例。

您想要为外部创建一个ConfigurationSection类,为您的2个集合创建一个ConfigurationElementCollection&amp;每个项目的ConfigurationElement类。

您的配置会略有不同,因为默认情况下,该集合使用<add/><remove/>&amp; <clear/>元素