#732 - Uno user control per leggere feed RSS

RSS è un formato che permette la syndication di contenuti da risorse esterne, come ad esempio siti web o servizi di notizie, piuttosto che blog.
Questo script, da utilizzare come user control, ritorna comodo perchè è facilmente riutilizzabile.
Basta infatti specificarlo nella pagina in questo modo:

<aspitalia:rss url="miofeed.xml" runat="server" />

e quindi risulta semplice anche per specificarne in un numero maggiore, mantenendo sempre la stessa routine per l'estrazione e la visualizzazione a video.
Ma ecco lo script, da salvare come rss.ascx:

<%@ Import namespace="System.Data" %>
<SCRIPT RUNAT="SERVER" LANGUAGE="C#">
string Title;
string Description;

// proprietà con l'URL del feed RSS

private string url;
public string Url
{
  set
  {
    url = value;
  }
}

void Page_Load()
{
  // carico i dati in un dataset

  DataSet ds = new DataSet("rss");
  ds.ReadXml(url);

  // estratto titolo e descrzione

  Title = ds.Tables["channel"].Rows[0]["title"] as string;
  Description = ds.Tables["channel"].Rows[0]["description"] as string;

  rss.DataSource = ds.Tables["item"];
  rss.DataBind();
}
</SCRIPT>
<asp:repeater id="rss" runat="Server">

<HeaderTemplate>
<h1><%#this.Title%></h1>
<h3><%#this.Description%></h3>
</HeaderTemplate>

<ItemTemplate>
<h4><a href="<%# DataBinder.Eval(Container.DataItem, "link") %>">
<%# DataBinder.Eval(Container.DataItem, "title") %></a></h4>
<p><%# DataBinder.Eval(Container.DataItem, "description") %></p>
</ItemTemplate>

</asp:repeater>

Può essere una buona cosa quella di aggiungere, in cima allo user control, la possibilità di tenere in cache i dati, in modo da evitare che ogni richiesta vada a recuperare effettivamente via web il contenuto del feed RSS:

<%@ OutputCache Duration="3600" VaryByParam="None" %>


Approfondimenti

Commenti

Esprimi il tuo giudizio su questo script:

Per procedere devi essere autenticato.

Per inserire un commento, devi registrarti alla nostra community.




IN EVIDENZA
MISC