RSS应用

RSS应用  

RSS是Web 2.0的重要元素。RSS是Really Simple Syndication的简称,它是一种网页内容联合格式(Web Content Sydication Format)。


RSS概述
RSS文档是一种XML文档
<rss version="2.0">
<rss>元素的下一级是名称为<channel>的元素,它包含RSS文档中与频道相关的信息和内容。
<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
 <channel>
  <title>CSDN Blog: 焦点</title>
  <description>Dorient 内容 RSS 聚合服务</description>
  <link>http://blog.csdn.net/feed.aspx?Column=1803f9c1-606f-46c0-a2a8-c55f818d748a
  </link>
  <copyright>(c) 2007 Dorient.NET</copyright>
  <docs>http://backend.userland.com/rss</docs>
  <generator>CSDN.CMS.FrontEnd.Alpha</generator>
  <item>
   <title>谁是真的英雄?Dorient社区专家另类数据挖掘</title>
   <link>http://blog.csdn.net/yizia/archive/2007/03/23/1538125.aspx</link>
   <pubDate>Fri, 23 Mar 2007 09:23:20 GMT</pubDate>
  </item>
  <item>
   <title>物有本末、事有始终-访 Dorient 总裁</title>
   <link>http://blog.csdn.net/marksnow/archive/2007/03/21/1536647.aspx</link>
   <pubDate>Thu, 22 Mar 2007 09:37:21 GMT</pubDate>
  </item>
 </channel>
<rss>


RSS技术规范

1 数据类型
RSS文档可以使用4种数据类型:字符型,时间和日期型,E-mail地址和URL型。其中,字符型使用最为广泛。RSS文档的所有元素都可以使用该类型的数据,即RSS文档的所有元素的值都可以解释为字符型。RSS文档中的时间和日期型数据必须遵循RFC 822文档,如可以使用如下格式的日期和时间:
<pubDate>Mon, 10 Oct 2006 14:10:00 GMT</pubDate>
<lastBuildDate>Mon, 10 Oct 2006 09:10:00 EST</lastBuildDate>
<pubDate>Mon, 10 Oct 2006 08:10:00 -0600</pubDate>
E-mail地址型和URL的数据必须符合给定的格式。其中E-mail地址型必须符合RFC 2822文档指定的电子邮件的格式。URL型必须符合RFC 3987文档指定的URL的格式。如“ftp://”、"http://"、“mailto:”、“news://”等。

2 元素
RSS文档包含的元素比较多,如<rss>、<channel>、<item>等。
<channel>元素(频道)。每一个RSS文档必须有且只有一个<channel>元素,而且该元素必须包含<title>、<link>和<description>元素。其中,<title>元素为频道的名称,它的值往往与网站相关或相同:<link>元素为响应该频道的网站的URL:<description>元素为该频道的描述:<channel>元素除了上述3个必选元素之外,其他元素均为可选元素。具体说明如下:
<category>元素,指定频道所属的一个或多个分类
<cloud>元素,必须所有进程注册一个cloud(用于获得频道的更新通知),并为RSS种子实现一个轻量级的发布订阅协议
<copyright>元素,版权声明
<docs>元素,指向RSS格式文档的URL地址
<generator>元素,生成频道的程序名称
<image>元素,与频道一起显示的图片地址
<language>元素,使用的语言
<lastBuildDate>元素,最后更新时间
<managingEditor>元素,内容负责人的E-mail
<pubDate>元素,内容的发布时间
<rating>元素,该频道的统计图片地址
<skipDays>元素,告诉使用者哪些天是可以忽略的
<skipHours>元素,告诉使用者哪些时段是可以忽略的
<textInput>元素,指定一个textbox控件与该频道一起显示
<ttl>元素,ttl是Time to live的缩写,它指示cache的有效保存时间
<webMaster>元素,技术人员的E-mail
<item>元素,描述频道的一个子项目
<image>元素是<channel>元素的可选子元素,它包含3个必需子元素和3个可选子元素,具体描述如下:
<url>元素(必需),指定GIF、JPEG或PNG图象文件的URL地址。其中,该图象代表整个频道。
<title>元素(必需),用于描述上面的图象,等同于HTML语言中的<img>的alt属性
<link>元素(必需),指定要连接的站点的URL。当显示频道时,图象的连接指向该站点。另外<title>和<link>元素的值往往与它们所在频道的<title>和<link>元素的值相同。
<width>和<height>元素(可选),它们指定图象的宽度和高度(其中,单位为像素)。它们的值均为数值型。图象宽度的最大值为144,默认值为88;图象高度的最大值为400,默认值为31。
<description>元素(可选),指定<link>元素中的title属性的文本。在调用网页时,它的值将被显示。
<cloud>元素是<channel>元素的可选子元素。它指定一个可以支持rssCloud接口的web服务。其中,rssCloud接口可以使用HTTP-POST、XML-RPC、SOAP1.1等协议实现。该元素的目的是允许通知注册为cloud的进程频道被更新,从而实现一个轻量级的发布订阅协议。下述代码定义了一个 <cloud>元素:
<cloud domain="rpc.sys.com" port="80" path="/RPC2" registerProcedure="myCloud.rssPleaseNotify" protocol="xml-rpc" />
在上述代码中,为了请求频道通知,浏览者需要发送一个XML-RPC消息到rpc.sys.com的80端口,路径为/RPC2。发送时调用的过程或方法为myCloud.rssPleaseNotify。
<ttl>元素指定频道在被刷新前被缓存的时间
<textInput>元素是<channel>元素的可选子元素。其提供了一个输入框。主要元素包括如下:
<title>元素,指定提交按钮的标签
<description>元素,指定该文本输入区的描述
<name>元素,指定文本输入区的名称
<link>元素,指定处理文本输入的CGI脚本饿URL
<item>元素是<channel>元素的可选子元素。其中,一个频道可以包含多个<item>元素。每一个<item>元素可以用来描述不同的内容。<item>元素包含的子元素的具体说明如下:
<author>元素,作者的E-mail地址
<catetory>元素,指定item可以包含在一个或多个分类中。它与channel的<catetory>元素遵循相同的规则
<comments>元素,指定与item相关的评论的地址
<description>元素,指定item的概要
<enclosure>元素,指定附加的媒体对象
<guid>元素,指定可以唯一确定item的字符串
<link>元素,指定item的URL
<pubDate>元素,指定item发布的时间
<source>元素,指定RSS频道来源
<title>元素,指定item的标题
<item>元素的所有子元素都是可选的。但是,它至少要包含一个<title>和<description>元素
<author>元素是<item>元素的可选子元素。它指定item的作者的E-mail。对于通过RSS传播的报纸和杂志来说,它的值可能是写该item所描述的文章的人。而对于聚集型webblogs来说,它的值可能是责任编辑或站长
<category>元素是<item>元素的可选子元素。它可以指定一个可选属性或域。其中,该属性或域是一个用来定义分类法的字符串,它的值是使用正斜杠分割的字符串,每一个子字符串表示一个分级
<enclosure>元素是<item>元素的可选子元素。它包含3个必需属性:url、length和type。其中,url属性指定enclosure的位置,length属性指定enclosure的大小(使用字节描述),type属性指定enclosure的标准MIME类型
<guid>元素是<item>元素的可选子元素。其中,guid是globally unique identifier的缩写。它指定一个可以唯一识别item的字符串。当item发布之后,聚合器可以选择使用该字符串来判断该item是否是为最新
注意:<guid>元素还包含一个属性:isPermaLink。如果它的值为true,则RSS读取器认为该元素的值是item的permalink,即指向当前<item>元素所描述的全部item
<pubDate>元素是<item>元素的可选子元素,它指定item发布的日期。如果当前时间晚于它指定的日期,则聚合妻在日期到达它指定的日期之前,可以不显示该item
<source>元素是<item>元素的可选子元素,它的值是item来自的RSS频道的名称,从item的title衍生而来。该元素必须包含一个属性url。该属性链接到XML序列化源


目前流行的RSS阅读器
1 看天下(www.kantianxia.com) 2 新闻蚂蚁(www.newsants.com) 3 周博通(www.zhoubotong.com)
4 咨讯通(www.hc360.com)  5 新浪点点通
总体功能设计
1 RSS订阅
订阅RSS源:将RSS源的地址添加到数据库中
修改RSS源:修改已经添加到数据库中的RSS源的各种属性
RSS源管理:管理数据库中RSS源
2 RSS阅读器
创建一个简单RSS页面
读取RSS的频道,解释RSS内容中的频道,并读取频道的信息
读取RSS的Item,解释RSS内容中的Item,并读取Item的信息
创建RSS页面,通过上述读取的频道信息和Item信息,创建一个RSS页面,并在网页中显示RSS的内容
表设计
RSS链接地址表RSSUrl
     RSSUrl表
  字段名  数据类型 字段说明 键引用  备注
  ID  int  ID  PK  主键(自动增1)
  Name  varchar(200) 标题     
  Url  varchar(255) URL
  CreateDate datetime 创建时间


应用程序RSS
<td background='<%# Request.ApplicationPath+"/App+Themes/Web2ASPNET2/Images/titlebg.jpg" %>' clospan="2" height="25">
创建RSS页面的头部
private XmlTextWriter WriteRSSHeader(XmlTextWriter writer){
 writer.WriteStartDocument();
 writer.WriteStartElement("rss");
 writer.WriteAttributeString("version","2.0");
 writer.WriteStartElement("channel");
 writer.WriteElementString("title","Simple RSS Document");
 writer.WriteElementString("link","http://www.danielbright.net/");
 writer.WriteElementString("description","A simple RSS document generated using XMTTextWriter");
 writer.WriteElementString("copyright","Copyright 2006-2007 梦海飞翔");
 return writer;
}
创建RSS的Item项
private XmlTextWriter WriteRSSItem(XmlTextWriter writer,string title,string linkk,string description){
 writer.WriteStartElement("item");
 writer.WriteElementString("title",title);
 writer.WriteElementString("link",link);
 writer.WriteElementString("description",description);
 writer.WriteElementString("CreateDate",DateTime.Now.ToString("r"));
 writer.WriteEndElement();
 return writer;
}
private XmlTextWriter WriteRSSItem(XmlTextWriter writer,RSSItem item){
 writer.WriteStartElement("item");
 foreach(string key in item.Attributes.Keys){
  writer.WriteElementString(key,itemAttributes[key]);
 }
 writer.WriteEndElement();
 return writer;
}
创建RSS页面的尾部
private XmlTextWriter WriteRSSTailer(XmlTextWriter writer){
 writer.WriteEndElement();
 writer.WriteEndElement();
 writer.WriteEndDocument();
 return writer;
}
输出RSS页面
public void CreateSampleRss(HttpResponse response,params RSSItem[] items){
 XmlTextWriter writer=new XmlTextWriter(response.OutputStream,System.Text.Encoding.UTF8);
 WriteRSSHeader(writer);
 foreach(RSSItem item in items){WriteRSSItem(writer,item);}
 WriteRSSTailer(writer);
 writer.Flush();
 writer.Close();
 response.ContentEncoding=System.Text.Encoding.UTF8;
 response.ContentType="text/xml";
 response.Cache.SetCacheability(HttpCacheability.Public);
}
创建一个简单的RSS页面
using System.Xml;
using Web2ASPNET2.WebRSS;
private void Page_Load(object sender,System.EventArgs e){
 SampleRss rss=new SampleRss();
 RSSItem[] items=new RSSItem[2];
 for(int i=0;i<item.Length;i++){item[i]=new RSSItem();}
 items[0].Title="Title #1";
 items[0].Link="http://news.csdn.net/Feed.aspx?Column=7adf68b5-ce01-4213-ad3c-ea8fd6e01f89";
 items[0].Description="This is the first test item";
 items[1].Title="Title #2";
 items[1].Link="http://test.com/blabla.aspx";
 items[1].Description="This is the second test item";
 rss.CreateSampleRss(Response,items);
}
订阅RSS
数据访问层设计
using Web2ASPNET2.OperateSqlServer;
using System.Data.SqlClient;
namespace Web2ASPNET2.WebRSS{
 public class Url{
  public Url(){}
  //获取订阅的所有RSS源
  public DataSet GetUrls(){
   return DataCommon.GetDataByDataSet("Pr_GetRssUrls");
  }
  //获取单个订阅的RSS源
  public SqlDataReader GetSingleUrl(int urlID){
   return DataCommon.GetDataByReaderIDParam("Pr_GetSingleRssUrl",urlID);
  }
  //订阅RSS源
  public int AddUrl(string name,string url){
   SqlParameter[] parameters={OperateDatabase.CreateInParam("@Name",SqlDbType.VarChar,200,name),
         OperateDatabase.CreateInParam("@Url",SqlDbType.VarChar,255,url)};
   return (OperateDatabase.RunProc("Pr_AddRSSUrl",parameters));
  }
  //修改订阅的RSS源
  public int UpdateUrl(int urlID,string name,string url){
   SqlParameter[] parameters={OperateDatabase.CreateInParam("@ID",SqlDbType.Int,4,urlID),
         OperateDatabase.CreateInParam("@Name",SqlDbType.VarChar,200,name),
         OperateDatabase.CreateInParam("@Url",SqlDbType.VarChar,255,url)};
   return (OperateDatabase.RunProc("Pr_UpdateRSSUrl",parameters));
  }
  //删除订阅的RSS源
  public int DeleteUrl(int urlID){
   return DataCommon.QueryDataIDParam("Pr_DeleteRSSUrl",urlID);
  }
 
 } 
}
存储过程
/*获取所有订阅的RSS源/*
create procedure [dbo].[Pr_GetRSSUrls]
as
select * from RSSUrl order by CreateDate desc
/*获取单个订阅的RSS源/*
create procedure [dbo].[Pr_GetSingleRSSUrl]
(
 @ID int
)
as
select * from RSSUrl where ID=@ID
/*订阅RSS源/*
create procedure [dbo].[Pr_AddRSSUrl]
(
 @Name varchar(200),
 @Url varchar(255)
)
as
insert into RSSUrl(Name,UrlCreateDate) values(@Name,@Url,getdate())
/*修改订阅的RSS源/*
create procedure [dbo].[Pr.UpdateRSSUrl]
(
 @ID int,
 @Name varchar(200),
 @Url varchar(255)
)
as
update RSSUrl set Name=@Name,Url=@Url where ID=@ID
return @@ROWCOUNT
/*删除订阅的RSS源/*
create procedure [dbo].[Pr_DeleteRSSUrl]
(
 @ID int
)
as
delete RSSUrl where ID=@ID
return @@ROWCOUNT
订阅RSS源
页面初始化
using Web2ASPNET2.CommonOperation;
using Web2ASPNET2.UserCommonOperation;
using Web2ASPNET2.WebRSS;
protected void Page_Load(object sender,EventArgs e){
 UserInfo info=(UserInfo)UserCommonOperation.GetUserInfo(Session);
 if(info==null){
  Response.Write("<script>history.back()</script>");
  Server.Transfer("~/Portal/UserLogin.aspx");
  return;
 }
}
添加新RSS源
protected void btnAdd_Click(object sender,EventArgs e){
 //执行添加操作
 Url url=new Url();
 if(url.AddUrl(tbName.Text,tbUrl.Text)>0){
  Dialog.OpenDialog(Response,"恭喜您,添加RSS源成功......");
 }
}
返回功能
protected void btnReturn_Click(object sender,EventArgs e){
 Server.Transfer("~/Portal/UrlManage.aspx");//返回管理页面
}
修改RSS源
页面初始化
using Web2ASPNET2.CommonOperation;
using Web2ASPNET2.UserCommonOperation;
using Web2ASPNET2.WebRSS;
using System.Data.SqlClient;
int urlID=-1;
protected void Page_Load(object sender,EventArgs e){
 UserInfo info=(UserInfo)UserCommonOperation.GetUserInfo(Session);
 if(info==null){
  Response.Write("<script>history.back()</script>");
  Server.Transfer("~/Portal/UserLogin.aspx");
  return;
 }
 //获取被修改信息的ID
 if(Request.Params["UrlID"]!=null){
  urlID=DataTypeConvert.ConvertToInt(Request.Params["UrlID"].ToString());

 }
 //显示被修改的数据
 if(!Page.IsPostBack&&urlID>-1){BindPageData(urlID);}
 //设置按钮的可用性
 int[] idList={urlID};
 ButtonEnable.ControlButtonEnable(btnUpdate,idList);
}
private void BindPageData(int urlID){
 //获取单个记录的信息
 Url url=new Url();
 SqlDataReader dr=url.GetSingleUrl(urlID);
 if(dr==null) return;
 if(dr.Read()){
  //显示信息
  tbName.Text=dr["Name"].ToString();
  tbUrl.Text=dr["Url"].ToString();
 }
 dr.Close();
}
修改RSS源
protected void btnUpdate_Click(object sender,EventArgs e){
 Url url=new Url();
 if(url.UpdateUrl(urlID,tbName.Text,tbUrl.Text)>0){
  Dialog.OpenDialog(Response,"恭喜您,修改RSS源成功......");
 }
}
RSS源管理
注意:下述HTML代码为一个gvUrl控件的一个模板列。该列显示了编辑和删除标签的图象按钮,即【★】和【×】按钮。按钮的CommandArgument属性保存它们所在行的标签的ID值;CommandName属性的值保存它们执行操作的标识。其中,修改标签按钮的CommandName属性的值为“update”,删除标签按钮的CommandName属性的值为“del”。
<asp:TemplateField HeaderText="操作">
 <ItemTemplate>
 <asp:ImageButton ID="ibtUpdate" runat="server" CommandName="update" ImageUrl="../App_Themes/Web2ASPNET2/Images/
  update.gif" AleternateText="编辑该RSS" CommandArgument='<%# Eval("ID") %>' />
 <asp:ImageButton ID="ibtDelete" runat="server" CommandName="del" ImageUrl="../App_Themes/Web2ASPNET2/Images/
  delete.gif" AleternateText="删除该RSS" CommandArgument='<%# Eval("ID") %>' />
 </ItemTemplate>
</asp:TemplateField>
页面初始化
using Web2ASPNET2.CommonOperation;
using Web2ASPNET2.UserCommonOperation;
using Web2ASPNET2.WebRSS;
protected void Page_Load(object sender,EventArgs e){
 UserInfo info=(UserInfo)UserCommonOperation.GetUserInfo(Session);
 if(info==null){
  Response.Write("<script>history.back()</script>");
  Server.Transfer("~/Portal/UserLogin.aspx");
  return;
 }
 if(!Page.IsPostBack){BindPageData();}
}
private void BindPageData(){
 Url url=new Url();
 Web2ASPNET2.CommonOperation.DataBinder.BindGridViewData(gvUrl,url.GetUrls());
}
重定向和删除功能
protected void gvUrl_RowCommand(object sender,GridViewCommandEventArgs e){
 if(e.CommandName=="update"){
  Server.Transfer("~/Portal/UpdateUrl.aspx?UrlID="+e.CommandArgument.ToString());
 }
 if(e.CommandName=="del"){
  Url url=new Url();
  url.DeleteUrl(DataTypeConvert.ConvertToInt(e.CommandArgument.ToString()));
  BindPageData();
 }
}
protected void gvUrl_RowDataBound(object sender,GridViewRowEventArgs e){
 ImageButton ibtDelete=(ImageButton)e.Row.FindControl("ibtDelete");
 if(ibtDelete!=null){
  ibtDelete.Attributes.Add("onclick","return confirm('你确定要删除所选择的数据行吗?');");
 }
}
RSS阅读器
using System;
using System.Data;
using System.Web;
using System.Xml;
using System.ComponentModel;
using System.Collections;
using System.Collections.Generic;
using System.Net;
using System.IO;
namespace Web2ASPNET2.WebRSS{......}
定义RSS的Item
public class RSSItem{
 //保存值的字典
 private Dictionary<string,string> attributes;
 public RSSItem(){
  //初始化字典
  if(attributes==null){
   attributes=new Dictionary<string,string>();
  }
 }
 //属性Attributes
 [Browsable(false)]
 public Dictionary<string,string> Attributes{
  get{return attributes;}
 }
 //索引器
 [Browsable(false)]
 public string this[string key]{
  get{return GetValue(key);}
 }
 //设置属性的值
 public void SetAttributes(string name,string value){
  if(string.IsNullOrEmpty(name)==true) return;
  string localName=name.ToLower();
  //判断值是否存在
  if(Attributes.ContainsKey(localName)==false){
   Attributes.Add(localName,value.Trim());
  }
 }
 //获取属性的值
 protected string GetValue(string name){
  return (attributes.ContainsKey(name)?attributes[name]:null);
 }
 //属性Title
 public string Title{
  get{return GetValue("title");}
  set{SetAttributes("title",value);}
 }
 //属性Link
 public string Link{
  get{return GetValue("link");}
  set{SetAttributes("link",value);}
 }
 public string Description{
  get{return GetValue("description");}
  set{SetAttributes("description",value);}
 }
}
定义RSS的频道
public class RSSChannel:RSSItem{
 private const string RSSITEM="item";
 private const string RSSCHANNEL="channel";
 private string url;
 //频道的Item集合
 private List<RSSItem> items;
 public RSSChannel():base(){}
 public RSSChannel(string url){
  //初始化
  this.url=url;
  if(items==null){items=new List<RSSItem>();}
 }
 //属性Items保存频道的Item项
 public List<RSSItem> Items{
  get{if(items==null) {items=new List<RSSItem>();}return items;}
 }
}
读取RSS的Item
private RSSItem ReadItem(XmlTextReader reader,string name){
 RSSItem item=new RSSItem();
 //读取Item节点的属性的值
 while(reader.Read()){
  if(reader.NodeType==XmlNodeType.Element){//设置属性的值
   item.SetAttribute(reader.LocalName,reader.ReadString());
  }
  //结束循环
  if(reader.NodeType==XmlNodeType.EndElement&&reader.LocalName.ToLower()==name){break;}
 }
 return item;
}
读取RSS频道
public void ReadChannel(){
 if(string.IsNullOrEmpty(url)==true) return;
 XmlTextReader reader=new XmlTextReader(url);//获取RSS网页的内容
 string localName;
 while(reader.Read()){//获取当前节点名称
  localName=reader.LocalName.ToLower();
  //判断当前节点是否为元素类型
  if(reader.NodeType==XmlNodeType.Element){
   if(localName==RSSITEM){
    items.Add(ReadItem(reader,RSSITEM));
   }
   //读取节点的内容值
   if(reader.MoveToContent()==XmlNodeType.Element){
    string content=reader.ReadString();
    if(reader.NodeType==XmlNodeType.EndElement){
     SetAttribute(reader.LocalName,content);
    }
   }
  }
 }
}
<frameset id="IndexFrame" rows="80,*" frameborder="1" border="0" framespacing="0">
 <frame id="Header" name="Header" scrolling="no" scr="../UserControl/Header.aspx" noresize></frame>
 <frameset id="MainFrame" cols="180,*" rows="*" border="0" framespacing="0">
  <frame name="Tree" src="LeftUrl.aspx" scrolling="auto" frameborder="0" noresize></frame>
  <frame name="Desktop" src="ViewRSS.aspx" scrolling="auto" frameborder="0"></frame>
 </frameset>
</frameset>
页面LeftUrl.aspx添加一个DataList控件
<asp:DataList ID="dlLink" runat="server" SkinID="dlSkin">
 <ItemTemplate>
 <a href='ViewRSS.aspx?UrlID=<%# Eval("ID") %>' target="Desktop"><%# Eval("Name") %></a>
 </ItemTemplate>
 <AlternatingItemTemplate>
 <a href='ViewRSS.aspx?UrlID=<%# Eval("ID") %>' target="Desktop"><%# Eval("Name") %></a>
 </AlternatingItemTemplate>
</asp:DataList>
页面leftUrl.aspx初始化
using Web2ASPNET2.CommonOperation;
using Web2ASPNET2.UserCommonOperation;
using Web2ASPNET2.WebRSS;
protected void Page_Load(object sender,EventArgs e){
 //显示被修改的数据
 if(!Page.IsPostBack){BindPageData();}
}
private void BindPageData(){
 Url url=new Url();
 Web2ASPNET2.CommonOperation.DataBinder.BindDataListData(dlLink,url.GetUrls());
}
页面ViewRSS.aspx初始化
private void ShowRss(string url){
 //根据URL获取频道的数据
 RSSChannel channel=new RSSChannel(url);
 channel.ReadChannel();
 //获取每一个Item项
 RSSItem[] items=new RSSItem(channel.Items.Count);
 int i=0;
 foreach(RSSItem item in channel.Items){items[i++]=item;}
 //创建RSS文档
 SampleRss rss=new SampleRss();
 rss.CreateSampleRss(Response,items);
}
using Web2ASPNET2.CommonOperation;
using Web2ASPNET2.UserCommonOperation;
using Web2ASPNET2.WebRSS;
using System.Data.SqlClient;
页面ViewRSS.aspx在事件Page_Load(object sender,EventArgs e)中初始化其数据,其实现功能如下:
获取、显示RSS源的ID值,并保存在变量urlID中,调用函数BindPageData(int urlID)从数据库中获取该RSS源的URL,并保存在变量urlLink中,调用函数ShowRss(string url)在页面ViewRSS.aspx中显示该RSS源的具体内容。
int urlID=-1;
string urlLink=string.Empty;
protected void Page_Load(object sender,EventArgs e){
 //获取被修改信息的ID
 if(Request.Params["UrlID"]!=null){
  urlID=DataTypeConvert.ConvertToInt(Request.Params["UrlID"].ToString());
 }
 //显示被修改的数据
 if(!Page.IsPostBack&&urlID>-1){
  BindPageData(urlID);
  ShowRss(urlLink);
 }
}
private void BindPageData(int urlID){
 Url url=new Url();
 SqlDataReader dr=url.GetSingleUrl(urlID);
 if(dr==null) reutrn;
 if(dr.Read()){urlLink=dr["Url"].ToString();}
 dr.Close();
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值