本文主要是介绍12.4 添加RSS频道功能 (征服ASP.NET 2.0 Ajax——Web开发技术详解 ),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
--------------http://book.csdn.net/bookfiles/305/10030512726.shtml12.4 添加RSS频道功能
添加RSS频道的功能虽然简单,但由于牵扯到数据库和局部更新的问题,所以为了理清开发的思路,本例给出了实现添加功能的流程,如图12-6所示。
图12-6 实现添加功能的流程
12.4.1 添加频道到数据库的方法
为了方便的将数据添加到数据库中,需要设计一个RSS操作类,其中包含一个实现添加功能的方法,实现此功能的步骤如下:
(1)打开Web.Config文件。
(2)添加数据库连接字符串,否则无法建立与数据库的连接,字符串如下,其中包括了连接字符串的名称、要连接的服务器和数据库等信息。
<connectionStrings >
<add name="connRSS" connectionString="Data Source=CGJ-57F90CCA64C/SQLEXPRESS;Initial Catalog=RssReader;Integrated Security=True"/>
</connectionStrings>
(3)在网站根目录下添加一个类,命名为“RssManager.cs”,当单击“添加”按钮时,系统会询问是否将类存放在“App_Code”目录下,选择“是”,因为此目录下的类在保存后自动编译。
(4)在类中首先设置一个变量,用来获取连接字符串。本例使用的是ConfigurationManager类中的 “ConnectionStrings”方法。代码如下:
private string connectionString = ConfigurationManager.ConnectionStrings["connRSS"].ConnectionString;
(5)由于本例需要使用操作SQL Server的类,所以必须引用命名空间“SqlClient”,引用代码如下:
using System.Data.SqlClient;
(6)设计添加频道的方法“AddRss”,代码如清单12-3所示。
代码清单12-3 添加频道的方法
/// <summary>
/// 定义添加rss到数据库中的方法
/// </summary>
/// <param name="name">rss的名字</param>
/// <param name="url">rss的链接地址</param>
public void AddRss(string name,string url)
{
//初始化sql命令
SqlCommand cmd = new SqlCommand();
//在一个范围内执行sql命令,范围结束后,释放所有对象
using (SqlConnection conn = new SqlConnection(connectionString))
{
//定义命令属性
//判断数据库连接状态
if (conn.State != ConnectionState.Open)
conn.Open();
cmd.Connection = conn;
cmd.CommandType = CommandType.Text;
cmd.CommandText = "INSERT INTO RssStore VALUES('" +name +"','" +url +"')";
//执行命令
cmd.ExecuteNonQuery();
}
}
(7)按“Ctrl+S”保存设计的代码。
12.4.2 异步发送添加请求的客户端实现
在用户单击“添加RSS”按钮后,为了提高运行速度,本例将使用XMLHttpRequest实现数据的提交工作,异步功能实现的原理如图12-7所示。
图12-7 异步提交的原理图
实现的步骤如下:
(1)打开Default.aspx页。
(2)为“添加RSS”按钮添加click事件,事件调用方法“addrss”。
(3)在head元素内添加脚本代码,方法“addrss”的代码如清单12-4所示。其中需要创建一个XMLHttpRequest对象。
代码清单12-4 添加按钮调用的方法
<script type="text/javascript">
var xmlhttp;
function createXMLHttp()
{
//未考虑除IE外其他浏览器-创建异步对象
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
function addrss()
{
createXMLHttp();
//判断异步对象状态的方法
xmlhttp.onreadystatechange=statechange;
//获取添加的RSS属性
var name=document.getElementById("txtRssName").value;
var url=document.getElementById("txtRssUrl").value;
//加载服务器页并发送数据请求
xmlhttp.open("GET","addRssNamePage.aspx?name="+escape(name) +"&url="+escape(url),true);
xmlhttp.send(null);
}
</script>
注意:传递参数时,如果参数为中文,必须使用escape方法包装。
(4)在创建XMLHttpRequest对象的过程中,使用方法“statechange”判断事件的状态,此方法的设计代码如清单12-5所示。主要目的:是当请求成功完成后,调用方法“handleStr”实现页面的局部刷新。
代码清单12-5 判断请求状态的方法
function statechange()
{
//如果请求已经完成
if(xmlhttp.readystate==4)
{
//判断请求是否成功返回
if(xmlhttp.status==200)
{
//返回的是字符串,进行处理后显示在客户端
handleStr(xmlhttp.responseText);
}
}
(5)设计实现局部刷新的方法,代码如清单12-6所示。
代码清单12-6 更新频道列表的方法
function handleStr(list)
{
//获取频道列表所在的div
var oldcontent=document.getElementById("namelist").innerHTML;
//更新div中的内容
var newcontent=oldcontent+list;
//显示新的div
document.getElementById("namelist").innerHTML=newcontent;
}
以上是客户端需要实现的技术,那么当XMLHttpRequest对象请求服务器处理时,应该怎么在服务器端实现处理功能呢?
12.4.3 添加请求的服务器端实现
当处理完客户端的技术后,可以发现,客户端要求服务器端返回的是字符串,本例就介绍如何返回客户端需要的数据内容,同时又将数据添加到服务器中。
(1)在网站根目录下,添加一个Web窗体,命名为“addRssNamePage.aspx”。
(2)将页面的HTML源代码界面内容全部删除,只保留最上面一行代码,此操作主要是删除掉返回操作中的多余字符。保留代码如下:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="addRssNamePage.aspx.cs" Inherits="addRssNamePage" %>
(3)按F7进入页面的代码视图。
(4)在Page_Load事件中处理两个功能:返回客户端数据和将数据添加到数据库。代码如清单12-7所示。注意返回客户端的是一段用字符串连接的HTML代码。
代码清单12-7 服务器端处理添加数据的代码
protected void Page_Load(object sender, EventArgs e)
{
//获取页面传递参数并参加记录到数据库中
//获取参数;
string name = Request.QueryString["name"];
string url = Request.QueryString["url"];
//先生成返回的字符串
StringBuilder mystr = new StringBuilder();
mystr.Append("<a href=javascript:loadContent(' "+url + "');>"+name+"</a>" );
mystr.Append("<br/>");
Response.Write(mystr);
//后台再处理添加到数据库的操作
RssManager myrss = new RssManager();
myrss.AddRss(name, url);
}
(5)按“Ctrl+S”保存代码。
(6)将“Default.aspx”设置为起始页,按F5运行程序,测试频道的添加功能。当输入频道名称和频道URL后,单击“添加RSS”功能,此时运行的速度很快,频道列表中立刻显示出了刚刚添加的频道名称。运行效果如图12-8所示。
图12-8 添加频道成功后效果图
这篇关于12.4 添加RSS频道功能 (征服ASP.NET 2.0 Ajax——Web开发技术详解 )的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!