2012-05-16 54 views
0

好的記錄,我比許多.NET更加熟悉Java和RnR。我已經修復了一些功能中的一些錯誤,並且在這裏和那裏搜索了一些新的「功能」,但這不是我的專業知識。 OK告誡,這是我的問題,我需要爲我們的網站建立在ASP.NET中的RSS提要。谷歌翻了幾個解決方案,但我用這個作爲一個例子: http://www.aspfree.com/c/a/C-Sharp/Creating-an-RSS-Feed-with-ASP-Net-Written-in-C-Sharp/ASP.NET創建RSS提要,沒有錯誤,但沒有數據

奇怪的是,我得到這一切沒有錯誤,我可以看到,但是當我運行它,我只是得到了一個空白頁面正常工作。我測試了SQL,它工作並返回我想要的行,但我不知道如何診斷它是否連接到數據庫或者它爲什麼不返回任何內容。下面的代碼:

asp.aspx.cs:

using System; 
using System.Text; 
using System.Collections; 
using System.ComponentModel; 
using System.Data; 
using System.Data.SqlClient; 
using System.Drawing; 
using System.Xml; 
using System.Web; 
using System.Web.SessionState; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Web.UI.HtmlControls; 
using System.Diagnostics; 


     //Class for returning RSS feed Data 

    public partial class rss : System.Web.UI.Page 
{ 

    private void Page_Load(object sender, System.EventArgs e) 
    { 
     string sSource; 
     string sLog; 
     string sEvent; 
     sSource = "RSS Feed"; 
     sLog = "Application"; 
     sEvent = "Database Connectiont"; 
     // Connect to the Database 
     SqlConnection myConnection = new SqlConnection("Data Source=localhost;Initial Catalog=events;Persist Security Info=True;User ID=wa;Password=password;"); 
     // Retrieve the SQL query results and bind it to the Repeater 
     const string SQL_QUERY = "SELECT EventName, Comments, URL, StartDate FROM event WHERE SaleDateTo > getdate() AND SaleDateFrom < getdate() AND redirecttourl is not null ORDER BY EventDate"; 
     SqlCommand myCommand = new SqlCommand(SQL_QUERY, myConnection); 
     bool IsDbAvailable = true; 
     try { 
      myConnection.Open(); 
      rptRSS.DataSource = myCommand.ExecuteReader(CommandBehavior.CloseConnection); 
      rptRSS.DataBind(); 
      myConnection.Close(); 
      } 
      catch { 
       IsDbAvailable = false; 
       if (!EventLog.SourceExists(sSource)) 
         EventLog.CreateEventSource(sSource,sLog); 
      } 
     finally { 
      myConnection.Close(); 
     }  
    } 

    protected string FormatForXML(object input) 
    { 
     string data = input.ToString(); //cast input to string 

     // replace those characters disallowed in XML documents 
     data = data.Replace("&", "&amp;"); 
     data = data.Replace("\"", "&quot;"); 
     data = data.Replace("'", "&apos;"); 
     data = data.Replace("<", "&lt;"); 
     data = data.Replace(">", "&gt;"); 

     return data; 
    } 
} 

rss.aspx:

<%@ Page language="c#" CodeFile="rss.aspx.cs" ContentType="text/xml" AutoEventWireup="false" Inherits="rss"%> 
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml" > 

<asp:Repeater id="rptRSS" runat="server"> 

    <HeaderTemplate> 
    <rss version="2.0"> 
     <channel> 
     <title>TA On-Sale Feed</title> 
     <link>http://www.website.com/rss.aspx</link> 
     <description>All events current on-sale</description> 
    </HeaderTemplate> 

    <itemTemplate> 
    <event> 
    <title><%#FormatForXML(DataBinder.Eval(Container.DataItem,"EventName"))%> 
    </title> 
    <description> 
    <%#FormatForXML(DataBinder.Eval(Container.DataItem, "Comments"))%> 
    </description> 
    <link>http://order.ticketalternative.com<%#DataBinder.Eval(Container.DataItem, "url")%> 
    </link> 
    <eventdate> 
    <%#DataBinder.Eval(Container.DataItem, "StartDate")%> 
    <eventdate> 
    </event> 
    </ItemTemplate> 
    <FooterTemplate> 
      </channel> 
     </rss> 
     </FooterTemplate> 
    </asp:Repeater> 
</html> 
+1

您可能想要使用內置的['SyndicationFeed'](http://msdn.microsoft.com/zh-cn/library/system.servicemodel.syndication.syndicationfeed.aspx)類。 – jrummell

回答

0

填寫您的結果使用SQLDataAdpter設置成一個DataTable /數據集,然後再將數據集/表到rtpRSS.DataSource。

+0

因此我更新到: –

+0

SqlDataAdapter adapter = new SqlDataAdapter(SQL_QUERY,myConnection); \t \t DataSet events = new DataSet(); \t \t adapter.Fill(events,「Events」); \t \t rptRSS.DataSource = adapter; \t \t rptRSS.DataBind(); –

+0

頁面結果沒有任何區別,仍然是空白頁面... –

相關問題