2011-10-14 6 views
7

Ho bisogno di leggere un file XML da App_Data in MVC3 in base all'azione che l'utente sta accedendo al momento.Come leggere un file xml in App_Data con .NET MVC3 Framework in base al controller?

<xml> 
    <actions> 
    <item action="index"> 
     <add url="www.stackoverflow.com" description="This site it's for learning purpouses" /> 
    </item> 
    </actions> 
</xml> 

quale sarebbe il modo migliore per ottenere che <item> secondo l'utente di azione E 'l'accesso?

EDIT


dimenticato di dire che l'XML può accedere solo 1 controller. Così il nome del file è [regolatore] .xml

risposta

10

si potrebbe usare una XDocument e il metodo XPathSelectElement estensione per analizzare XML:

public ActionResult Index() 
{ 
    string action = RouteData.GetRequiredString("action"); 
    string controller = RouteData.GetRequiredString("controller"); 
    string appDataPath = Server.MapPath("~/app_data"); 
    string file = Path.Combine(appDataPath, controller + ".xml"); 
    var xpath = "//item[@action='" + action + "']"; 
    var item = XDocument.Load(file).XPathSelectElement(xpath); 
    if (item != null) 
    { 
     var add = item.Element("add"); 
     var url = add.Attribute("url").Value; 
     var description = add.Attribute("description").Value; 
    } 
    ... 
} 
+0

Hm bella risposta, ma credo che non ci sia una magica modo nativo C# MVC3 fai questo e gestisci l'xml come oggetti e proprietà. –

+0

@Guilherme Costa, certo che esiste un modo magico. Tutto quello che devi fare è definire un modello di vista che corrisponda alla struttura XML e quindi deserializzare il codice XML in questo modello di vista. Ad esempio, potresti utilizzare la classe XmlSerializer. –

+0

Ci proverò. Grazie –

Problemi correlati