Smile 笑容

单文件aspx实现Google sitemaps

 呵呵,搜索了很久,寻找 c#关于 Google sitemaps的内容,都没有找到合适的代码可以拿来直接用,于是查资料拼凑了一个。
本代码的看点:
  • 单文件实现,通过 @import 代替 cs 文件中 using的方法,这个查了很久才知道在aspx中 using变成了这个
  • 设置文件返回类型(见下面代码的第一行)
  • 借鉴别人RSS生成器的做法,用Repater实现GoogleSitemap的输出

除了上述看点,也就剩下一个:比较少的修改就可以拿来用到你的网站上!

附件代码如下:

<%@Page Language="C#" ContentType="text/xml"%>
<%@Import Namespace="System"%>
<%@Import Namespace="System.IO"%>
<%@Import Namespace="System.Data"%>
<%@Import Namespace="System.Data.SqlClient"%>
<%@Import Namespace="System.Configuration"%>
<%@Import Namespace="System.Web"%>
<%@Import Namespace="System.Web.Security"%>
<%@Import Namespace="System.Web.UI"%>
<%@Import Namespace="System.Web.UI.HtmlControls"%>
<%@Import Namespace="System.Web.UI.WebControls"%>
<%@Import Namespace="System.Text"%>
<%@Import Namespace="System.Text.RegularExpressions"%>
<%@Import Namespace="System.Xml"%>
<script language="C#" runat="server">
  public string rssTitle = "Google Sitemaps";

   protected void Page_Load(object sender, EventArgs e)
   {

/*
TODO: 本文件的特点是 单文件 实现 Google sitemaps的生成
环境是 Microsoft.net Framework 2.0 sp1
在 web.config 配置 connectionString 或有自己的 dbHelper

		string connectionString = WebConfigurationManager.AppSettings["connectionString"];
		SqlConnection con = new SqlConnection(connectionString);
		string sql = @"SELECT url, 'weekly' as changefreq FROM Section  UNION SELECT url, 'monthly' as changefreq FROM Articles ";
		SqlCommand cmd = new SqlCommand(sql, con);
		cmd.CommandType = CommandType.Text;

		con.Open();
		SqlDataReader reader = cmd.ExecuteReader();

		DataSet ds=new DataSet();
		reader.Fill(ds);
*/

        BLL.News newsbll = new BLL.News();
        rptRss.DataSource = newsbll.GetList("deletetag=0 order by publishdate desc");
        rptRss.DataBind();


/*
		rptRss.DataSource = reader;
		rptRss.DataBind();
*/
   }

</script><head runat="server" visible="false"></head><asp:Repeater id="rptRss" runat="server">
<HeaderTemplate><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<!--<%# rssTitle %>--></HeaderTemplate>
<ItemTemplate>
<url><loc>http://www.dutemba.com/newsdetail.aspx?id=<%# Eval("id") %></loc><changefreq>monthly</changefreq><lastmod><%# string.Format("{0:s}", Eval("publishdate")) %>+08:00</lastmod></url></ItemTemplate>
<FooterTemplate>
</urlset>
</FooterTemplate>
</asp:Repeater>