ASP.NET
Linq to Xml – gestione news (part 2)
1Continuando quanto cominciato con la prima parte di questo tutorial implemento le altre due funzionalità fondamentali, ovvero la cancellazione e l’aggiornamento di una notizia.
Cancellazione
Come per la creazione creiamo un XDocument con li file delle news, poi individuiamo la notizia con l’attributo id corrispondete a quella che vogliamo eliminare e facciamo una Remove(). Non ci resta che salvare il file.
XDocument newsXML = XDocument.Load(Server.MapPath("App_Data\\News.xml")); newsXML.XPathSelectElement("News/Notizia[@Id = '" + idNews + "']").Remove(); newsXML.Save(Server.MapPath("App_Data\\News.xml")); |
Modifica
Per la modifica utilizziamo la stessa tecnica usata per la cancellazione con l’unica differenza che non invochiamo la Remove() ma ma aggiorniamo i campi della notizia che intendiamo modificare
XDocument newsXML = XDocument.Load(Server.MapPath("App_Data\\News.xml")); XElement notizia= newsXML.XPathSelectElement("News/Notizia[@Id = '" + _idNews + "']"); notizia.Element("Title").Value = "Nuovo Titolo"; notizia.Element("Text").Value = "Nuovo testo"; notizia.Element("Data").Value = "31/12/2010"; notizia.Element("Evidence").Value = "False"; newsXML.Save(Server.MapPath("App_Data\\News.xml")); |
Linq to Xml – gestione news (part 1)
1Linq è molto semplice da imparare e nel contempo molto potente. Linq dispone di quattro implementazioni: Linq to Sql, Linq to Entities, Linq to DataSets, Linq to Object e Linq to XML. In questo post cercherò di implementare un piccolo sistema di gestione delle news basato su Linq to Xml.
Partiamo dalla nostra sorgente dati, ovvero dal file XML. Esso è composto dal primo elemento “News” all’interno del quale sono contenute tutte le “Notizia”. Ogni notizia possiede un attributo identificativo “Id” che corrisponde alla data trasformata in stringa secondo la convenzione yyyyMMddhhmmss. Le notizie inoltre possiedono l’elemento “Data” che rappresenta la data dell’evento per cui è stata creata la news e un elemento “Evidence” per identificare le news più importanti.
<?xml version="1.0" encoding="utf-8"?> <News> <Notizia Id="20100707102340"> <Title>My first new</Title> <Text>My text,go on antferr.com</Text> <Data>07/07/2010</Data> <Evidence>True</Evidence> </Notizia> <Notizia Id="20100706102340"> <Title>My second new</Title> <Text>Hello readers</Text> <Data>06/07/2010</Data> <Evidence>True</Evidence> </Notizia> </News> |
Fatto ciò non ci resta che creare la web application ASP.NET C#, ipotizzando di inserire il file xml nella directory App_Data e di chiamarlo semplicemente News.xml
Partiamo dal backend, cioè dalla parte amministrativa che deve implementare le funzionalità di inserimento, modifica e cancellazione delle news.
Inserimento
XDocument newsXML = XDocument.Load(Server.MapPath("App_Data\\News.xml")); XElement elemento = newsXML.Element("News"); var notizia = new XElement("Notizia", new XAttribute("Id", news.Id), new XElement("Title", "Il mio titolo"), new XElement("Text", "Il mio testo"), new XElement("Data", "10/07/2010"), new XElement("Evidence", "True") ); elemento.Add(notizia); newsXML.Save(Server.MapPath("App_Data\\News.xml")); |
Per far sì che il codice sopra funzioni correttamente è necessario aggiungere i riferimenti a System.Xml.Linq e System.Xml.XPath. Il funzionamento è molto semplice. Creiamo un oggetto di tipo XDocument all’interno del quale carichiamo il contenuto del nostro file xml, poi creiamo un oggetto di tipo XElement che conterrà il contenuto del tag
Sys.Application is not an object – Solution
0Se il browser mostra l’errore Javascript Sys.Application is not an object, come visualizzato nello screenshot, ci sono diverse possibili cause.

La web application ha un web.config non settato per processare AJAX, probabilmente è stata creata, con Framework 2.0, una soluziona semplice ASP.NET all’interno della quale, poi, si sono inseriti dei controlli AJAX.
Se così non fosse c’è una possibilità che non balza subito all’attenzione: la versione di JSCRIPT. Nella directory ROOT\WINDOWS\SYSTEM32 è presente la dll JSCRIPT.dll, provate a verificarne la versione, se la versione è la 5.1 o se semplicemente è inferiore alla 5.6 basterà aggiornarla a quest’ultima (o ad una versione superiore) per far sì che il browser processi correttamente JavaScript.
Grafici .NET
0Nell’ultimo anno di lavoro ho utilizzato in maniera molto approfondita tre componenti per generare grafici su tecnologia ASP.NET: ZedGraph, Infragistics, DundasChart. La scelta di un componente per la creazione di grafici è spesso delicata. Una valutazione errata puo portare a risultati che non soddisfano le esigenze.
ZedGraph ha come punto di forza l’essere gratis. Offre una gamma di grafici abbastanza ampia ma che non copre la totalità delle necessità di uno sviluppatore. I grafici a disposizione sono Bar Chart, Line Chart e Pie Chart. Mancano Gantt e Gauge ed è possibile disegnare solo grafici 2D. Purtroppo ad oggi l’ultima release risale al 28 Novembre 2007, quindi da quasi un anno il progetto sembra essere fermo alla versione 5.1.4.
Per chi non ha budeget da spendere e deve creare grafici semplici ed essenziali perdendo però più tempo per personalizzarli è sicuramente una buona scelta.
Infragistics fornisce 35 controlli ASP.NET davvero utili e totalmente compatibili con ajax. Tra i tanti ci sono i grafici (UltraChart, UltraGauge) che offrono un alto livello di customizzazione. Infatti non è possibile acquistare esclusivamente solo i componenti grafici ma è necessario acquistare tutta la suite. L’infragistics, parlando dei grafici sul suo sito, scrive testualmente:
“Over 50 2D and 3D Chart Types.
Design-time Convenience – Custom wizard for designing single-layer or multi-layer charts, with optimized default presets to ensure you will make the best presentation of the chart type you have chosen to display.
Composite Charting – Build complex charts with Series Collections, Chart Area Collections and Chart Layers Collections.
Advanced Graphics – Use Anti-Aliasing, Alpha-Blending, Solid 3D, 2D or our custom Paint Elements to design the highest quality visual appearance.
Multiple Rendering – Choose from multiple image types for rendering as well as SVG and SWF.” Non mi sembra poco!
NetAdvantage for ASP.NET è un’ottima scelta sia per il costo che per la quantità e qualità dei controlli offerti.
Dundas Chart copre la totalità delle rappresentazioni grafiche con ottimi risultati da tutti i punti di vista. Davvero impressionante la funzionalità dello zoom (non presente negli altri), ottenuta trascinando il cursore del mouse lungo un’area del grafico. Pacchetti separati da quello “chart” sono Dundas Gauge e Dundas Map. Ottima scelta per chi ha soldi da spendere e pretende risultati ai massimi livelli.Tra i tre componenti grafici analizzati finora Dundas vince senza dubbio in termini di performance e di copiosità di grafici ma ha un costo piuttosto elevato, mentre Infragistic è un ottimo compromesso tra le performance e il prezzo in quanto ci fornisce oltre ai grafici tanti componenti aggiuntivi.
Infragistics WebNumericEdit – come cambiare il Group Separator
0
Il pacchetto di strumenti fornito da Infragistics è molto vasto e da tante possibilità in più allo sviluppatore, rendendogli al vita più facile. Uno di questi strumenti è il WebNumericEdit: una sorta di textbox abilitata al solo editing di numeri. Di default questo controllo utilizza un comma per separare le gruppi di numeri. Ad esempio rappresenta 2008 come 2.008. In molti casi (ad esempio se i numeri rappresentano delle quantità) questa cosa puo risultare utile, in altri no. Il 2008 in questa occasione voleva rappresentare l’anno solare, quindi è ovvio che 2.008 non ha molto senso.
E’ possibile cambiare il separator con un altro carattere oppure eliminarlo sostituendono con una stringa vuota in questo modo:
Come prima cosa bisogna aggiungere il riferimento a System.Globalization e poi inseireil codice sottostante dove MyWebNumericEdit è evidentemente il controllo in oggetto,
NumberFormatInfo numInfo = new NumberFormatInfo();
numInfo.NumberGroupSeparator = “”;
this.MyWebNumericEdit.NumberFormat = numInfo;
Se i miei post ti sono stati di aiuto o ti sono sembrati intressanti puoi offrirmi un caffè :)
Maximum request length exceeded ASP.NET
0Questo errore non è molto comune, ma è parecchio fastidioso. Si genera nel momento in cui vengono mandate troppe informazioni al server web, ad esempio un upload di un file troppo grande. La soluzione più veloce consiste nell’aumentare la quota di spazio per la request inserendo una variabile nel web.config:
<configuration> <system.web> <httpRuntime maxRequestLength="2097151"/>
Il valore “2097151″ ~= 2 Gb è il massimo per un appicazione di tipo ASP.NET 2.0
