2013-11-01 70 views
2

我很容易在SharePoint中做到這一點,但我似乎無法弄清楚如何在ASP.NET中這樣做。我只想從Weather.com(http://www.weather.com/rss/national/rss_nwf_rss.xml?cm_ven=NWF&cm_cat=rss&par=NWF_rss)等網站在我的網站中顯示一些簡單的RSS源。在我看到的每個例子中,他們都連接到數據庫,並添加了所有這些看似輕浮的額外內容。當然,必須有一個簡單的方法來添加你的URL並綁定到Listview/Gridview來顯示數據。你可以幫我嗎?如何在我的ASP.NET網站中顯示其他網站的RSS源?

回答

1

我會添加一箇中繼器來填充來自RSS的項目,並且還使用Syndication(System.ServiceModel.Syndication)。我選擇了轉發器,因爲它具有非常靈活的佈局。如果你願意,你可以使用ListView或者GridView。我的標記應該是這樣的:

<asp:Repeater ID="rptRSS" runat="server" OnItemDataBound="rptRSS_ItemDataBound"> 
    <HeaderTemplate> 
     <table class="tablerss"> 
    </HeaderTemplate> 
    <ItemTemplate> 
     <tr> 
      <td class="rsstitle"> 
       <asp:Label ID="lblRSSTitle" runat="server" CssClass="rsshead"></asp:Label> 
      </td> 
     </tr> 
     <tr> 
      <td> 
       <asp:HyperLink ID="lnkArticle" runat="server"></asp:HyperLink> 
      </td> 
     </tr> 
     <tr> 
      <td class="rssdescription"> 
       <asp:Label ID="lblDescription" runat="server"></asp:Label> 
      </td> 
     </tr> 
    </ItemTemplate> 
    <FooterTemplate> 
     </table> 
        <br /> 
    </FooterTemplate> 
</asp:Repeater> 

而且在我的代碼有:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
     LoadRSS(); 
    } 
} 
protected void rptRSS_ItemDataBound(object sender, RepeaterItemEventArgs e) 
{ 
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) 
    { 
     HyperLink lnkArticle = (HyperLink)e.Item.FindControl("lnkArticle"); 
     Label lblDescription = (Label)e.Item.FindControl("lblDescription"); 
     Label lblRSSTitle = (Label)e.Item.FindControl("lblRSSTitle"); 
     SyndicationItem item = (SyndicationItem)e.Item.DataItem; 

     lnkArticle.Text = item.Title.Text; 
     lnkArticle.NavigateUrl = item.Links[0].Uri.ToString(); ; 
     lblRSSTitle.Text = item.Title.Text; 
     lblDescription.Text = item.Summary.Text; 
    } 
} 

private void LoadRSS() 
{     
    List<SyndicationItem> lstSynItem = new List<SyndicationItem>(); 
    string uri = "http://www.weather.com/rss/national/rss_nwf_rss.xml?cm_ven=NWF&cm_cat=rss&par=NWF_rss"; 
    SyndicationFeed myRss = SyndicationFeed.Load(XmlReader.Create(uri)); 

    foreach (SyndicationItem item in myRss.Items) 
    { 
     lstSynItem.Add(item); 
    } 
    rptRSS.DataSource = lstSynItem; 
    rptRSS.DataBind(); 
} 

有由Scott Michell一些好文章,雖然他們沒有更新,但仍有助於開始探索RSS!

相關問題