一个简单asp.net下Web RSS控件

 

一个简单asp.net下Web RSS控件,支持数据绑定列设置,绑定到DataTable数据源。  设计模式中输出位html的帮助信息。正式用的时候。WebRss.OutRss();  输出标准XML格式的RSS文档

namespace  WebControls
{



    
public class WebRSS : WebControl
    
{
        
private object m_DataSource;

        
public WebRSS()
        
{
            m_ItemDescriptionField 
= "Description";
            m_ItemLinkField 
= "Link";
            m_ItemPubDateField 
= "PubDate";
            m_ItemTitleField 
= "Title";
            
            
this.Init += new EventHandler(WebRSS_Init);
        }


        
void WebRSS_Init(object sender, EventArgs e)
        
{
            
        }



        
private string m_Title, m_Link, m_Description, m_Language, m_ItemTitleField, m_ItemDescriptionField, m_ItemPubDateField, m_ItemLinkField;


        [Category(
"RSS基本属性")]
        [Description(
"RSS频道名称")]
        
public string Title
        
{
            
getreturn m_Title;}
            
set { m_Title = value; }
        }


        [Category(
"RSS基本属性")]
        [Description(
"RSS频道连接地址")]
        
public string Link
        
{
            
get return m_Link; }
            
set { m_Link = value; }
        }


        [Category(
"RSS基本属性")]
        [Description(
"RSS频道说明")]
        
public string Description
        
{
            
get return m_Description; }
            
set { m_Description = value; }
        }


        [Category(
"RSS基本属性")]
        [Description(
"RSS频道语言")]
        
public string Language
        
{
            
get return m_Language; }
            
set { m_Language = value; }
        }


        [Category(
"RSS项绑定属性")]
        [Description(
"RSS项标题列名")]
        
public string ItemTitleField
        
{
            
get return m_ItemTitleField; }
            
set { m_ItemTitleField = value; }
        }


        [Category(
"RSS项绑定属性")]
        [Description(
"RSS项描述列名")]
        
public string ItemDescriptionField
        
{
            
get return m_ItemDescriptionField; }
            
set { m_ItemDescriptionField = value; }
        }


        [Category(
"RSS项绑定属性")]
        [Description(
"RSS项发布时间列名")]
        
public string ItemPubDateField
        
{
            
get return m_ItemPubDateField; }
            
set { m_ItemPubDateField = value; }
        }


        [Category(
"RSS项绑定属性")]
        [Description(
"RSS项连接地址列名")]
        
public string ItemLinkField
        
{
            
get return m_ItemLinkField; }
            
set { m_ItemLinkField = value; }
        }


        


        [Category(
"RSS项绑定属性")]
        [Description(
"RSS项数据源")]
        
public object DataSource
        
{
            
get return m_DataSource; }
            
set { m_DataSource = value; }
        }


        
        
private void DataBindItem()
        
{
            
/**/
           
string templet = @"<asp:Repeater id=""myRepeater"" runat=""server"">
<ItemTemplate><item>
<title><%#DataBinder.Eval(Container.DataItem,""
"+m_ItemTitleField+@"""%></title>
<description><![CDATA[<%#DataBinder.Eval(Container.DataItem,""
" + m_ItemDescriptionField + @"""%>]]></description>
<pubDate><%#DataBinder.Eval(Container.DataItem,""
" + m_ItemPubDateField + @"""%></pubDate>
<link><%#DataBinder.Eval(Container.DataItem, ""
" + m_ItemLinkField + @""" %></link>
</item>
</ItemTemplate>
</asp:Repeater>
";
            

            Repeater r 
= new Repeater();
            
this.Controls.Add(r);
            

        }



        
/// <summary>
        
/// 输出RSS聚合内容
        
/// </summary>

        public void OutRss()
        
{
            StringBuilder rss 
= new StringBuilder();
            rss.AppendLine(
"<rss version="2.0">");
            rss.AppendLine(
"<channel>");
            rss.AppendLine(
"<title>"+m_Title +"</title>");
            rss.AppendLine(
"<link>" + m_Link + "</link>");
            rss.AppendLine(
"<description>" + m_Description + "</description>");
            rss.AppendLine(
"<language>zh-cn</language>");
            rss.AppendLine(
"<pubdate>" + DateTime.Now.ToString() + "</pubdate>");

            System.Collections.IEnumerable ie 
= m_DataSource as System.Collections.IEnumerable;
            
if (ie != null)
            
{
                System.Collections.IEnumerator ie2 
= ie.GetEnumerator();
                DataRowView dr;
                
while (ie2.MoveNext())
                
{
                    dr 
= ie2.Current as DataRowView;
                    rss.AppendLine(
@"<item>
<title>
" + Common.ToString(dr[m_ItemTitleField]) + @"</title>
<description><![CDATA[
" + Common.ToString(dr[m_ItemDescriptionField]) + @"]]></description>
<pubDate>
" + Common.ToString(dr[m_ItemPubDateField]) + @"</pubDate>
<link>
" + Common.ToString(dr[m_ItemLinkField]) + @"</link>
</item>
");

                }

            }


            rss.AppendLine(
"</channel>");
            rss.AppendLine(
"</rss>");
            
if (Page.Response != null)
            
{
                Page.Response.Clear();
                Page.Response.Expires 
= 0;
                Page.Response.ContentType 
= "text/xml";
                Page.Response.ContentEncoding 
= Encoding.UTF8;
                Page.Response.Write(rss.ToString());
                Page.Response.End();
            }


        }




        
protected override string TagName
        
{
            
get
            
{
                
return "channel";
            }

        }




        
protected override void RenderContents(HtmlTextWriter writer)
        
{
            DataBindItem();

            
if (DesignMode)
            
{
                writer.WriteLine(
"标题:" + m_Title); writer.WriteBreak();
                writer.WriteLine(
"连接:" + m_Link); writer.WriteBreak();
                writer.WriteLine(
"描述:" + m_Description); writer.WriteBreak();
                writer.WriteLine(
"语言:" + m_Language); writer.WriteBreak();
                
for (int i = 0; i < 3; i++)
                
{
                    writer.WriteBreak();
                    writer.WriteLine(
"RSS项标题:绑定列(" + m_ItemTitleField + ")"); writer.WriteBreak();
                    writer.WriteLine(
"RSS项连接:绑定列(" + m_ItemLinkField + ")"); writer.WriteBreak();
                    writer.WriteLine(
"RSS项说明:绑定列(" + m_ItemDescriptionField + ")"); writer.WriteBreak();
                    writer.WriteLine(
"RSS项时间:绑定列(" + m_ItemPubDateField + ")"); writer.WriteBreak();
                }

            }

            
else
            
{
                writer.WriteLine(
"应该输出为XML格式。"); writer.WriteBreak();
            }

            
base.RenderContents(writer);
        }


        


    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值