Omar Al Zabir är en av Pageflakes grundare. Förra året vann teamet över bland annat Microsoft's Live.com, Netvibes och Googles IG i Web 2.0 award kategorien startsidor. Ingen dålig bedrift kan man säga.
Vi behövde visa en samling av data i en egen ordning och varje rad skulle innehålla nyckel samt värde. Värdena skulle gå att få ut i samma ordning som vi la till dem med andra ord.
HashTable fungerar ju inte alls eftersom denna typ av samling sorteras efter de hashade nycklarna. SortedList trodde vi först skulle göra jobbet men, det framgick sen att den alltid sorterar samlingen efter nycklarna.
Efter ha läst på lite om namnrymden Collections och Collections.Specialized så hittade jag en typ av samling som klarade det vi behövde, nämligen NameValueCollection.
Här är ett kodexempel som lagrar kultur-beteckningarna tillsammans med namnet på länderna.
Hittade en intressant artikel av Steve Clements där han visar hur man kan bygga en RSS-läsare för att lägga in på en webbplats. Den använder AJAX-funktioner för att öppna inläggen när man läser dem. Till kodexemplet används ett speciellt RSS Toolkit som finns att läsa om på Dmitrys blog. Där finns även en zip-fil med verktygslådan att ladda hem.
Har inte testat den själv men det verkar intressant, skriv gärna en kommentar ifall du provar på detta. Är jättenyfiken på hur det fungerar.
Nu meddelas fantastiska nyheter i .NET-världen, ramverket ASP.NET AJAX 1.0 är klart och finns att ladda ner på den officiella hemsidan. Kolla även in dokumentationen som har utökats en hel del sedan beta-versionerna.
Så nu är det äntligen läge att börja använda denna nya teknik från Microsoft på sina skarpa projekt, utan att riskera att behöva koda om för förändringar mellan versionerna.
Läs även mer om releasen på Scott Guthries blogg där han förklarar lite om de senaste ändringarna. Värt att notera är att produkten blir historiskt, i den bemärkelsen att det är den första produkten från Microsoft som släpps som öppen källkod. Supporten kommer vara igång 24 timmar om dygnet i åtminstonde 10 år framåt.
Körde en test med W3C Markup Validation Service för att se att min sida validerar mot XHTML 1.0 Transitional standarden och märkte att så var inte fallet. Jag har gjort lite förändringar på sidan och något hade gått snett. En bild som rendereras av en ImageButton hade helt plötsligt fått ett border-attribut. Detta är inte giltig XHTML-kod och W3C-validatorn gav följande fel:
Error Line 240, column 577: there is no attribute "border". ..."", false, false))" border="0" />
När jag kollade källkoden på sidan såg jag dock inget border-attribut på bilden. Märkligt..
Efter lite undersökning så hittade jag posten "XHTML Validation Fails due to renders a BORDER="0" output" på Microsofts forum. Det verkar röra sig om ett missförstånd mellan W3C validator and ASP.NET ramverket. Lösningen är enkel, lägg till detta i Web.Config:
På många projekt som jag konverterar från 1.1 till 2.0 får jag felet:
Det gick inte att hitta typ- eller namnområdesnamnet MyUserControl_ascx (saknas ett using-direktiv eller en sammansättningsreferens?
I version 2.0 har nämligen komplileringsmodellen gjorts om en hel del och varje sida och kontroll kompileras i egna assemblys. Man måste nu tänka på att lägga in en referens på de sidorna som ska kunna använda kontrollens klasstyp. En alternativ lösning kan vara att lägga kontrollen i den speciella App_Code-mappen, men då kan man endast använda "inline-code"-modellen.
Jag tänkte nu visa några ett exempel på hur man kan referera till dynamiskt laddade User Controls, tilldela dem egenskaper och lägga till dem på sidan i en PlaceHolder. Exemplet visar hur man gör detta med både "code behind"- och "inline"-modell.
Det som är viktigt att tänka på är att referera till kontrollen med "Reference"-taggen som i mitt exempel ligger i mappen "ctrl". Observera också att när om kontrollen använder inline-kod så måste prefixet "ASP." användas på referensen till instansen.
using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls;
public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { Control ctrl = LoadControl("ctrl/WebUserControl_CodeBehind.ascx"); ((WebUserControl_CodeBehind)ctrl).StrProperty = "First string"; ph.Controls.Add(ctrl);
using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls;
public partial class WebUserControl_CodeBehind : System.Web.UI.UserControl { string strProperty = string.Empty;
public string StrProperty { get { return strProperty; } set { strProperty = value; } } void Page_Load() { lbl.Text = "Property from code-behind User Control: " + strProperty; } }
För ett tag sen läste jag att Castle Project går in i version beta 2, blev nyfiken och kollade hemsidan som finns på Castleproject.org. Som ofta när det gäller öppen källkod finns det mycket roligt att läsa om och välarbetade exempel.
För ett tag sen skrev jag inlägget om hur man kan skriva om webbadresser med Asp.Net (eller snarare om alla de svårigheter som är involverade). Många utvecklare har tacklats med problemet och jag tänker inte gå något djupare på de tekniska detaljerna nu. Ska dock spara lite nya länkar här som jag hittat.
Sen en adress till en Wiki helt dedikerad åt välskrivna url:er, där man kan läsa "ASP.NET - Well Designed Urls Wiki", och innehåller många relaterade länkar.
Several people have asked why the built-in URL Mapper in ASP.NET 2.0 doesn't support regular expressions. There were actually a few reasons for this -- one of the big ones being that just about the time we were about to consider adding it my team started also working on IIS7. We realized that a full-featured version would want/need to take advantage of some of the new features in IIS7 as well as the support all content types (in particular -- images and directories). So we postponed making it feature rich until a future version.
Själv är jag glad att jag inte har börjat försöka skriva om url:er på IIS 6 ännu, speciellt när man läser inlägg som "Making URL rewriting on IIS 7 work like IIS 6". Frågan är bara om man kan vänta, att ha snygga webbadresser känns ganska lockande, speciellt ur sökoptimerings-synpunkt. Men tänkt bara på att när IIS 7 släpps som riktig server-version så kan du tvingas att göra om det hela igen.
Om du vill ha några begynnande tankar från en som börjat testa url-omskrivning med IIS 7 på Vista, kan du läsa Dennis' blog.
En kort beskrivning hur man kan få fram antal raden som visas i en GridView, som är kopplat till en SqlDataSource, genom OnSelected event. Och då snackar vi som vanligt .NET. Koden för GridView och SqlDataSource:
Begreppet World Wide Web blev enligt Wikipedia allmänt känt för lite mer än 15 år sedan, närmare bestämt den 6 augusti 1991. Alla som surfar på nätet känner till förkortningen och har med största säkerhet knappat in kombinationen ett antal gånger.
Själv är jag, precis som QuadsZilla på seoblackhat.com, inget stort fan av onödiga tecken. Företeelsen att använda www i web-adresser är definitivt på väg att försvinna och fler och fler förutspråkar nu för pensioneringen av www.
På min egen webbplats bestämde jag mig således för att slopa den onödiga förkortningen för gott. Om man knappar in www före hemsidans adress så ser en kodsnutt till att lämna ett "301 Moved permanently"-meddelande och skickar vidare till adressen utan www.
Jag genomförde förändringen för några dagar sedan och nu väntar jag bara på hur sökmotorerna kommer att hantera förändringen. Förhoppningsvis kommer alla länkar i Google och resten av sökmotorerna bara visa den kortare varianten utan www.
Gjorde även en annan förändring som jag hoppas ska förbättra mina resultat i sökmotorerna. Tidigare gick länken "Blog" till sidan default.aspx och jag tror att detta resulterade i att sökmotorerna hittade två olika versioner av min förstasida. Det har känts lite som att sökmotor-botsen har haft lite "hicka" när de har spindlar sajten och min första sida har antagligen hamnat i "duplicate content"-filtret. Så ett tips är att se till att inga länkar på din hemsida leder till index.htm, index.php, default.aspx eller liknande, utan istället direkt till förstasidan som i mitt fall är http://codeodyssey.se/. Förhoppningsvis ska det bli lite bättre nu.
Här under kan ni koden från min Global.asax som tar hand om detta.
void Application_Error(object sender, EventArgs e) { // Code that runs when an unhandled error occurs
}
void Session_Start(object sender, EventArgs e) { // Code that runs when a new session is started
}
void Session_End(object sender, EventArgs e) { // Code that runs when a session ends. // Note: The Session_End event is raised only when the sessionstate mode // is set to InProc in the Web.config file. If session mode is set to StateServer // or SQLServer, the event is not raised.