asp.net生成静态页面

wuhongyao3 2010-04-14 02:44:41
大家好,现在有这样一个需求,在网站中添加新闻,新闻页面要求生产静态页面。
网上一般就是提供2中方法。一种是URL重写(这个不需要)
一种是写好模板,添加新闻时候直接替换新闻内容。对于这个方式

public static bool WriteFile(string filename, string title, string addtime, string content)
{
string path = HttpContext.Current.Server.MapPath("../news");//文件输出目录
Encoding code = Encoding.GetEncoding("gb2312");
// 读取模板文件
string temp = HttpContext.Current.Server.MapPath("template/news.htm");//模版文件
StreamReader sr = null;
StreamWriter sw = null;
string str = "";
try
{
sr = new StreamReader(temp, code);
str = sr.ReadToEnd(); // 读取文件
}
catch (Exception exp)
{
HttpContext.Current.Response.Write(exp.Message);
HttpContext.Current.Response.End();
sr.Close();
}
finally
{
sr.Close();
}
//静态文件名
// 替换内容
// 这时,模板文件已经读入到名称为str的变量中了
str = str.Replace("newstitle", title );
str = str.Replace("newsaddtime", addtime );
str = str.Replace("newscontent", content);
// 写文件
try
{
sw = new StreamWriter(path + "\\" + filename, false, code);
sw.Write(str);
sw.Flush();
}
catch (Exception ex)
{
HttpContext.Current.Response.Write(ex.Message);
HttpContext.Current.Response.End();
}
finally
{
sw.Close();
}
return true;
}

但是现在,我们新闻页面不仅仅显示的是内容,在页面的左边会有一个栏目是最新动态,就是实时的显示几条最新录入的新闻,现在就是这块没搞明白是怎么做的。 在这请教大家指导一下。谢谢。。
...全文
277 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
AsYouLikeIt 2010-07-19
  • 打赏
  • 举报
回复
学习了
wuhongyao3 2010-04-15
  • 打赏
  • 举报
回复
已经解决了。用了AJAX解决掉了。。谢谢大家。。
wangminqi 2010-04-14
  • 打赏
  • 举报
回复
用数据库,记录你的新闻的地址,其中有个 录入时间 字段,然后 用 order by inputdate desc
查询出top n 条 显示在那个最新动态中就行了,可以使用javascript 配合一下


http://www.mystruggle.com.cn

http://www.mybuffet.cn
skyland84 2010-04-14
  • 打赏
  • 举报
回复
不支持AJAX?

不叫你使用.NET的自己用JS 底层的请求
wuhongyao3 2010-04-14
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 yingyuebingya 的回复:]
学学ajax,反正以后要用的
[/Quote]

恩,我试试你上边给的那个方法。。
yingyuebingya 2010-04-14
  • 打赏
  • 举报
回复

学学ajax,反正以后要用的
wuhongyao3 2010-04-14
  • 打赏
  • 举报
回复
用IFRAME可以是可以了。但是样式表不应用。 郁闷。

还有就是用IFRAME利于不利于SEO呢?
webtop1 2010-04-14
  • 打赏
  • 举报
回复
用DIV 结合 iframe 就可以了
wuhongyao3 2010-04-14
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 ch_weni 的回复:]
引用 2 楼 wuhongyao3 的回复:

空间不支持AJAX.


你怎么判断的不支持?
[/Quote]

可能我的理解有问题
凤凰涅檠 2010-04-14
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wuhongyao3 的回复:]

空间不支持AJAX.
[/Quote]

你怎么判断的不支持?
wuhongyao3 2010-04-14
  • 打赏
  • 举报
回复
、<iframe src="hot.aspx" />
用这个倒是可以了。。
wuhongyao3 2010-04-14
  • 打赏
  • 举报
回复

StringBuilder result = new StringBuilder();
sql = "select top 12 * from [T_News] where newstypeid=16 order by id desc";
DataView dv = DBFun.GetDataView(sql);
DataTable dt = DBFun.dataTable(sql);

if (dt.Rows.Count > 0)
{
result.Append("<table cellpadding='0' cellspacing='0' border='0'>");
for (int i = 0; i < dt.Rows.Count; i++)
{
result.Append("<tr>");
result.Append("<td width='29' align='center' style='border-bottom: 1px dotted #ccc'>");
result.Append("<img src='images/arrow3.gif' width='29' height='11' /></td>");
result.Append("<td width='200' align='center' style='border-bottom: 1px dotted #ccc'>");
result.Append("<a class='newslink' target='_blank' href=" + "000" + ">" + "title" + "</a></td></tr>");
}
result.Append("</table>");
listStr = result.ToString();
}

前台
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="hot.aspx.cs" Inherits="hostnews" %>
<script >
var str = "<%=listStr %>";
document.write(str);
</script>

模板
<script src="../hot.aspx" />

提示错误。是我用的不对?
yingyuebingya 2010-04-14
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 sq_zhuyi 的回复:]
1、AJAX
2、<iframe src="hot.aspx" />
3、<script src="hot.aspx" /> : 参考代码
hot.aspx
var str = "<%=listStr %>";
document.write(str);
[/Quote]
如果只生成一次的话,用2,3也许好点
躲奶 2010-04-14
  • 打赏
  • 举报
回复
其实最新动态可以生成为js文件,然后在页面调用,这个方法适合最新文章之类的列表。

比如添加了新文章,就查找数据库然后生产js文件。
news[0][0]="标题1"
news[0][1]="url1"
news[1][0]="标题2"
news[0][1]="url2"
news[0][0]="标题3"
news[2][1]="url3"

然后再通过news生态列表。
yingyuebingya 2010-04-14
  • 打赏
  • 举报
回复

源码来自周公《ASP.Net夜话》
yingyuebingya 2010-04-14
  • 打赏
  • 举报
回复

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ServerTime.aspx.cs" Inherits="AJAXJS_Pro_ServerTime" %>


protected void Page_Load(object sender, EventArgs e)
{
//设置页面服务器不缓存结果
Response.Cache.SetCacheability(HttpCacheability.NoCache);
//...
Response.Write(DateTime.Now.ToString());
}
yingyuebingya 2010-04-14
  • 打赏
  • 举报
回复
AJAX 实现

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title></title>
<meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
<meta name=ProgId content=VisualStudio.HTML>
<meta name=Originator content="Microsoft Visual Studio .NET 7.1">
<script language="javascript">
var request = false;
//实例化XMLHttpRequest
function createXMLHttpRequest()
{
try
{
request = new ActivexObject("Msxml2.XMLHTTP");
}
catch(e1)
{
try
{
request = new ActivexObject("Microsoft.XMLHTTP");
}
catch(e2)
{
request = false;
}
}
if(!request && typeof XMLHttpRequest != 'undefined')
{
//非IE内核浏览器实例化XMLHttpRequest的方法
request = new XMLHttpRequest();
}
}

//发送客户端请求的方法
function getServerTime(format)
{
//调用上面的方法实例化XMLHttpRequest
createXMLHttpRequest();
//escape()对特殊字符进行转义
var url = "ServerTime.aspx?format="+escape(format);
//alert(url);
//通过GET的方式打开请求,第三个参数ture表示异步发送请求,false表示同步
request.open("GET",url,true);
//当request的等待状态发生变化时要执行的客户端方法
request.onreadystatechange=update;
//因为在url中已经附带了参数,这里的参数为null
request.send(null);
}
//当接收到服务器的响应之后执行的客户端方法
function update()
{
//状态为4表示得到了服务器的正确响应
if(request.readyState == 4)
{
document.getElementById("time").innerHTML = request.responseText;
}
}
</script>
</head>
<body>
<table border="0">
<tr>
<td>服务器时间:</td><td><div id="time"></div></td></tr>
<tr>
<td colspan="2"><input type="button" value="时间" onclick="JavaScript:void getServerTime('yyyy-mm-dd')"/></td>
</tr>
</table>
</body>
</html>
yan267 2010-04-14
  • 打赏
  • 举报
回复
要实时,要查询数据库了。至少要有一个服务器是可以运行查询数据库的,静态的网站可以用ajax去服务器获取数据,用JS分析传值后显示出来。
wuhongyao3 2010-04-14
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 sq_zhuyi 的回复:]
1、AJAX
2、<iframe src="hot.aspx" />
3、<script src="hot.aspx" /> : 参考代码
hot.aspx
var str = "<%=listStr %>";
document.write(str);
[/Quote]
hot.aspx 就仅仅输出一些 最新新闻就OK了?
路人乙e 2010-04-14
  • 打赏
  • 举报
回复
1、AJAX
2、<iframe src="hot.aspx" />
3、<script src="hot.aspx" /> : 参考代码
hot.aspx
var str = "<%=listStr %>";
document.write(str);
加载更多回复(5)

62,047

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧