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

重点: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的蜘蛛

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值