Jag bloggar numera på http://blog.dileno.com ».

dileno

Prenumerera på RSS

Jag som driver denna blogg heter Martin Söderlund och jobbar till vardags som webbkonsult i Stockholm.
Mitt fokus ligger på systemutveckling i .NET, och gränssnittsutveckling.

Close

Welcome! This is a blog written by me, Martin Soderlund. I live in Stockholm, Sweden, and work as a web consultant with Nansen.

As of now, this blog is written only in swedish. I suggest you use Google Translate to read my blog posts. Also, I'm blogging in English, over here: blog.dileno.com.

I am also available at Twitter, where I share information I find useful.

Jag börjar blogga på engelska

Från och med nu så kommer jag att blogga på engelska på min nya blogg: blog.dileno.com.

Jag kommer därmed att flytta allt fokus till min nya blogg och Twitter.

Denna svenska blogg kommer givetvis att finnas kvar - den kommer bara inte att uppdateras mer!

För att inte missa något så föreslår jag att du lägger till RSS-flödet för min nya blogg eller börjar följa mig på Twitter.

På återseende!

Twitter-modul i ASP.NET för nedladdning

Om du har letat efter en Twitter-modul för ASP.NET så behöver du inte leta längre. Jag har skrivit ihop en modul i C# för att konsumera ett givet Twitter-flöde. Du kan ladda ner modulen och använda enkelt i ditt projekt.

Användning

Twitter-modulen fungerar som så att man väljer att visa ett eller flera meddelanden från ett givet Twitter-flöde. Det enda man behöver göra är att ange ett användarnamn som finns på Twitter och antalet meddelanden som ska visas.

Här är ett kodexempel för hur du visar fem Twitter-meddelanden i en Repeater.

Code-behind:

string userName = "dileno";

List<TwitterFeed> messages = TwitterFeed.Fetch(userName, 5);

if (messages.Count>0)
{
rptTwitterMessages.DataSource = messages;
rptTwitterMessages.DataBind();
}

Repeater i aspx/ascx:

<asp:Repeater ID="rptTwitterMessages" runat="server">
<HeaderTemplate><ul></HeaderTemplate>
<FooterTemplate></ul></FooterTemplate>
<ItemTemplate><li><%#((TwitterFeed)Container.DataItem).Message %> (<a href="<%#((TwitterFeed)Container.DataItem).Link %>"><%#((TwitterFeed)Container.DataItem).PubDate %></a>)</li></ItemTemplate>
</asp:Repeater>

Ladda ner Twitter-modulen

Du kan ladda ner Twitter-modulen med komplett källkod och kodexempel för att testa och använda själv:

Ladda ner Twitter-modulen (zip-fil, 13 kB)

Korta instruktioner för implementation

  • Lägg in klassen TwitterFeed.cs i ditt projekt.
  • Nyttja koden i Default.aspx.cs för att visa Twitter-meddelanden som du vill.
  • I appSettings.Config finns nyckeln TwitterFeedUrl som du behöver kopiera till din appSettings.Config.

Uppdatera dina språkfiler för att undvika FormatException när du försöker radera en sida i EPiServer

Om du försöker radera en sida i EPiServers redaktörsläge och får ett System.FormatException-felmeddelande så beror det ofta på att du inte har uppdaterade språkfiler på din webbplats.

Det du ska göra är att helt enkelt uppdatera dina språkfiler som ligger i lang-mappen, till de senaste för EPiServer-installationen.

Så här ser felmeddelandet ut:

System.FormatException: Index (zero based) must be greater than or equal to zero 
and less than the size of the argument list.

Och stacken ser ut så här:

[FormatException: Index (zero based) must be greater than or equal to zero and less than the size of the argument list.]
System.Text.StringBuilder.AppendFormat(IFormatProvider provider, String format, Object[] args) +7483117
System.String.Format(IFormatProvider provider, String format, Object[] args) +107
EPiServer.UI.Edit.DeletePage.CreateReferenceList(PageReferenceCollection deleteData) +318
EPiServer.UI.Edit.DeletePage.OnLoad(EventArgs e) +609
System.Web.UI.Control.LoadRecursive() +50
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +627

Det som sker är att du försöker radera en sida som har beroenden knutna till sig. I stället för felmeddelandet ska EPiServer visa ett meddelande och ge dig två val - att radera sidan eller avbryta raderingen. Det är här det blir fel, om man inte har uppdaterade språkfiler.

Om man tittar på metoden DeletePage.CreateReferenceList() i Reflector (finns i stacken ovan) så ser man att metoden skickar tillbaka en översatt sträng och en länk:

if (string.Compare(strA, string.Empty) == 0)
{
strA = base.Translate("#reftypeshortcut");
}
SystemMessageContainer systemMessageContainer = base.SystemMessageContainer;
systemMessageContainer.Message = systemMessageContainer.Message + string.Format(strA + "<br>", this.RenderLink(reference));

Det är framför allt base.Translate("#reftypeshortcut") som är intressant - det är nämligen här som problemet uppstår. Tittar man på reftypeshortcut i en gammal språkfil så ser den ut så här:

<reftypeshortcut>{0} is the destination in a shortcut from {1}</reftypeshortcut>

Samma element ser ut så här i en nyare språkfil:

<reftypeshortcut>Page with ID {0} links to this page or some of its descending pages.</reftypeshortcut>

Varpå man kan dra slutsatsen att indexet 1 helt enkelt inte finns i den tidigare språkfilen, om man har uppdaterat webbplatsen, men inte språkfilerna.

Få dina gamla tillägg att fungera i Firefox 3.5

Med en uppgraderad version av Firefox så fungerar sällan de tillägg man använder. Det finns dock ett enkelt sätt att få dem att fungera! Så här gör du för att dina gamla tillägg i Firefox fungerar i nya versionen:

  1. Skriv in about:config i adressfältet och tryck enter.
  2. Högerklicka, välj New -> Boolean och skriv in "extensions.checkCompatibility".
  3. Sätt värdet på nya variabeln till false.
  4. Starta om webbläsaren - klart!

Till sidhuvudet

Clicky Web Analytics