您的位置:首页 > 职场人生

黑马程序员_学习日记80_808图书商城项目纪要

2012-08-09 22:47 531 查看
重点:url重写、生成静态页

1、BookDetail.aspx

Page_Load():

if(!string.IsNullOrEmpty(Request.QueryString["id"]))//请求id不为空

{

int id = 0;

if(!int.TryParse(Request.QueryString["id"],out id))//id不能成功转换

{

Response.Redirect("/BoookList.aspx");

}

else//id能成功转换

{

StringBuilder builder = new StringBuilder();

//根据id取Model.Book实体

if(model != null)

{

//自己拼字符串,table

}

else

{

Response.Redirect("/BookList.aspx")

}

}

}

2、url重写

为什么进行url重写?

便于搜索引擎优化

(1)在MasterPage.Master的Page_Load中改

//node.NavigateUrl = "/BookList2.aspx?categoryId="+model.Id;

node.NavigateUrl = "/BookList_"+model.Id+".aspx";

(2)在BeginRequest事件中进行url重写

string url = Request.AppRelativeCurrentExecutionFilePath;//~/BookList_25.aspx

Match match = Regex.Match(url,@"~/BookList_(\d+).aspx")//判断url是否需要重写

if(match.Success)

{

int id = Convert.ToInt32(match.Groups[1].Value);//得到书目类别编号

//url重写,重新交给原url进行处理//BookList.aspx?categoryId="+model.Id;

Context.RewritePath("/BookList.aspx?categoryId="+id);

}

(3)修改Action属性的值

问题:点排序方式的提交按钮后url又回到原样式

A、建App_Browsers文件夹,在其中新建my.browser浏览器文件。加一个配置项:

<browser refID="Default">

<controlAdapters>

<adapter controlType="System.Web.UI.HtmlControls.HtmlForm" adapterType="BookShop.Web.UrlRewriterControlAdapter">

</adapter>

</controlAdapters>

</browser>

ASP.Net用.browser浏览器文件来确定浏览器功能

form标签加上runat = server即为HtmlForm

B、添加两个类 UrlRewriter.cs UrlRewriterControlAdapter.cs,这两个类负责修改submit按钮的action属性

3、静态页

静态页降低数据库、web服务器cpu的压力。

什么样的内容做成静态页?看新闻

(1)一站静态化

A、建CreateStatePage.aspx,放一个button,Text="生成静态页"

btnPage_Click()

{

//从BLL层获取图书列表list

if(list != null)

{

//每个model生成一个网页

foreach(Model.Book model int list)

{

//TODO:StringBuilder拼接html网页

//建StaticPage文件夹放静态页

File.WriteAllText(Server.MapPath("/StaticPage/"+model.Id+".html"),builder.ToString(),Encoding.UTF8);

}

}

}

B、改BookList中图片链接"/StaticPage/{0}.html"

(2)生成单个静态文件,按日期放在不同文件夹中

BLL层,加CreateStaticPage方法,根据图书的编号取得model,拼接字符串生成对应的静态页。

按日期分文件夹存放静态页

改BookList中标题链接 href='<%#GetDir(Eval("PublishDate"))%><%#Eval("Id")%>.html'

(3)按模板静态化

TemplatePage文件夹专门放模板,建BookContent.html模板文件。

用占位符代表模板中需要替换的内容。

在BLL.BookManager中的CreateStaticPage方法中读模板并替换:

string template = File.ReadAllText(HttpContext.Current.Server.MapPath("/TemplatePage/BookContent.html"));

string html = template.Replace("$title",model.Title).Replace("$body",model.ContentDescription);

js、css的引用应为绝对路径

RSS在线共享内容的一种简易方式。通常用在时效性较强的网站。

RSS阅读器

<?xml varsion=?>

可以抓取Post的蜘蛛
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: