首页 新闻 搜索 专区 学院

Asp.net 网站后台管理在发布新闻时,如何自动生成此新闻对应的静态页面。或者使用了什么控件。谢谢回答!

0
悬赏园豆:50 [已解决问题] 解决于 2012-08-11 09:48

  如题,假设我做了一个asp.net 网站,网站前台可以显示新闻动态什么的。 网站后台就是负责管理新闻信息。当我在后台发布了一条新闻信息。我想在前台显示时,是根据当前日期然后自动生成的一个html页面。比如这个网址:http://news.qq.com/a/20120810/000766.htm 我猜想,这是管理员今天在他的网站后台发布了一条信息,而且是根据日期来自动生成的。然后前台页面显示后台管理员发布的内容信息的。请问如何实现这种技术,谢谢园友热情回答。

icyme的主页 icyme | 初学一级 | 园豆:77
提问于:2012-08-10 12:20
< >
分享
最佳答案
0

这个问题,你可以看看http://product.china-pub.com/43303

它是将地址使用URL重写功能完成的

第一步:下载 Intelligencia.UrlRewriter.dll组件,这个网上太多了。

第二步:添加Intelligencia.UrlRewriter.dll的引用。

第三步:在web.config中设置三个地方

      1、在<configSections></configSections>节中加上<section name="rewriter" requirePermission="false" type="Intelligencia.UrlRewriter.Configuration.RewriterConfigurationSectionHandler, Intelligencia.UrlRewriter" />;

      2、在<httpModules></httpModules>节中加上<add name="UrlRewriter" type="Intelligencia.UrlRewriter.RewriterHttpModule, Intelligencia.UrlRewriter"/>;

      3、在<configuration></configuration>节中添加<rewriter>    <rewrite url="~/(.+).html$" to="~/ViewNews.aspx?ID=$1" /> </rewriter> (这段替换规则需要根据你的实际需要去修改,如果要重写成HTML的格式,需要在IIS中设置映射,这个网上方法非常多。其中替换规则可以设置多个。)elligencia.UrlRewriter.dll的引用。

常用规则
当使用通配符映射或者使用ASP.NET处理所有HTTP请求的时候,IIS的默认文档机制也就失去了该有的作用,以下代码就是用来重新实现默认文档的方法:

<rewrite url="^(.*)/(\?.+)?$" to="$1/default.aspx$2" />
注意:使用“processing="restart"”的时候将会导致重写引擎从头开始执行所有的重写规则,此时应当注重包含“/default.aspx”字符串的处理。

如果你需要同时支持多个默认文档,那么以上代码需要修改为:

<if url="^(.*)/(\?.+)?$"> <rewrite exists="$1/default.aspx" to="$1/default.aspx$2" /> <rewrite exists="$1/index.aspx" to="$1/index.aspx$2" /> <rewrite exists="$1/index.html" to="$1/index.html$2" /></if>
编辑以上规则代码的时候,尤其要注意确认文件是否存在。

此外,在使用通配符映射或者使用ASP.NET处理所有HTTP请求的时候,你会发现.gif、.css等文件无法正常访问,这是因为此时对这些文件类型的处理都被ASP.NET所拦截。修正方法如下:

<rewrite  url="^(/.+(\.gif|\.png|\.jpg|\.ico|\.css|\.js)(\?.+)?)$"  to="$1" processing="stop" />
两个比较特殊的正则表达式字符是“^”和“$”(不是必须的),“^”代表URL的开头,“$”代表URL的结尾。使用这两个符号可以使您更加精确的控制重写动作,以确保程序所匹配的URL正是您想处理的。

“~/”表示当前网站应用程序运行所在的虚拟根目录,当您把网站应用程序安装于虚拟目录(或者非根目录)的时候,这尤其有用,而无须重新编写任何代码来替换您的虚拟根路径。

模式匹配在处理查询字串(QueryStrings)的时候尤其有用,这可以让您的URL去掉类似于“?id=3”的代码段,这非常有用,可以让你轻松的实现伪静态。

下面列出两个我们认为非常有特色的重写规则:

(1) 当目标URL不包含自定义查询字串的时候:

<rewrite url="^~/mypage(\?.+)?$" to="~/default.aspx$1" />
此时“$1”匹配的是(\?.+)?,也就是所有的查询字串。

(2) 当目标URL包含自定义查询字串的时候:

<rewrite url="^~/mypage(\?(.+))?$"  to="~/default.aspx?page=mypage&$2" />
注意此时需要使用“&”来代替“&”,这是XML文档语法的需要。

收获园豆:20
木蚂蚁 | 菜鸟二级 |园豆:245 | 2012-08-11 09:26

谢谢!

icyme | 园豆:77 (初学一级) | 2012-08-11 09:48
其他回答(2)
0

1.做一个新闻静态文件模板,模板中用标签标记需要动态生成的内容,如

<a><#New_Title></a>

<p><#New_Content></p>

 

2.读取模板文件内容(为一个字符串),通过Replace将标签<#New_Title>替换新闻的Title ,将标签<#New_Content>替换新闻的内容

3. 将最后的字符串保存为.html文件格式

收获园豆:15
johden2 | 园豆:352 (菜鸟二级) | 2012-08-10 12:49

谢谢园友热情回答!

支持(0) 反对(0) icyme | 园豆:77 (初学一级) | 2012-08-11 09:28
0

用webclient这个类创建一个对象,能够把后台生产的一个aspx页面用这个对象的一个download方法,返回的就是string类型的html代码,然后你用日期创建一个保存路径,把这个html代码写到之前的路径里面去就行了。用户访问的时候通过路径拼接就可以访问静态页面了,效率提高了不少,不过这只是针对数据更新少的页面,如果有些页面经常数据需要变化就不要做成静态页面了!

收获园豆:15
让手指在键盘上飞舞 | 园豆:82 (初学一级) | 2012-08-10 13:42

发现一个错误,是downloadstring这个方法,不好意思

@让手指在键盘上飞舞: 谢谢园友热情回答!

支持(0) 反对(0) icyme | 园豆:77 (初学一级) | 2012-08-11 09:29
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册