2011-10-12 18 views
6

Web.Config dosyamda atabileceğim bir sürü rota var. Koleksiyondaki her bölüm/öğe için bir anahtar ve iki değer alanına ihtiyacım var. Bu satırlar boyunca birşeyler ...Web.Config'deki özel bölüm/koleksiyon

<routes> 
    <add 
     key="AdministrationDefault" 
     url="Administration/" 
     file="~Administration/Default.aspx" /> 

    <add 
     key="AdministrationCreateCampaign" 
     url="Administration/CreateCampaign/" 
     file="~/Administration/CreateCampaign.aspx" /> 

    <add 
     key="AdministrationLogout" 
     url="Administration/Leave/" 
     file="~/Administration/Leave.aspx" /> 
</routes> 

Bu mümkün mü? Burada

cevap

2

Evet. Ve bir kez başladığında çok zor değil.

Sen (tipine <routes> elemanı bağlamak için yapılandırmasına bir <section> eklemek sonra ve) <routes> bölümünü tanımlamak için bir ConfigurationSection türetilmiş sınıf oluşturmak gerekir.

Koleksiyonun her öğesini tanımlamak ve koleksiyon için ikinci türünüzde varsayılan olarak işaretlenmiş bir öğeye ihtiyacınız olacak bir tür gerekir. Bütün bu gibi yapılandırma bölümüne erişmek zamanında, ayarlandıktan sonra

:

Blogum buna zemin üzerine birkaç makale vardır
var myRoutes = ConfigurationManager.GetSection("routes") as RoutesConfigSection; 

: orada başka answer belirtildiği gibi http://blog.rjcox.co.uk/category/dev/net-core/

Ayrıca kapsamı (eskiden olduğundan çok daha iyi).

1

Bunu yapmak edebilirsiniz yapılandırma bölümünü temsil edecek bir sınıf oluşturmak için istemiyorsanız:

var configSection = ConfigurationManager.GetSection("sectionGroup/sectionName"); 
var aValue = (configSection as dynamic)["ValueKey"]; 

dinamik geçmek için ya configSection anahtar değerlerle erişmenizi sağlar. Orada ne olduğunu ve hangi ValueKey'yi kullanacağınızı görmek için configSection'da bir ara nokta ve tepe noktası eklemeniz gerekebilir.