问题,还没解决,有没有,5.1没出去玩的,先帮我解决一下

zql2008 2009-05-01 09:03:09
StringBuilder Shtml2 = new StringBuilder();

Shtml //里面就是要替换的内容 如12882382388{$News_Content$}sdfsdf
for (int k = 0; k < PageCounter; k++)
{
Shtml2 = null;
Shtml2 = Shtml;


Shtml2.Replace("{$News_Content$}", k.ToString());

Cms.SetHtml(Shtml2, Path, Pathdir); 这个是生成html的

}


就是这样, 为什么,我生成html时, Shtml2.Replace("{$News_Content$}", k.ToString());

就替换过一次呢??也就是比如上面就替换 k=0 时,当 k=1或 2,3......,就没有再次进行替换了,怎么回事呢??
我现在是这个循环为什么不可以呢?我每次都重新给shtml2赋值了呀,为什么不可以呢???

还是有什么新的方法呢?
...全文
153 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
zql2008 2009-05-01
  • 打赏
  • 举报
回复
content1= dr["BXT_Content"].ToString();//内容
Content1 = Content1.Replace("{$Show_NextTitle$}", Prv);
drprv.Close();
drprv.Dispose();
Shtml.Append(Content1);

string Pathdir = Server.MapPath("../") + "Html\\" + Convert.ToDateTime(dr["BXT_Addtime"]).Year + "\\" + Convert.ToDateTime(dr["BXT_Addtime"]).Month + "\\" + Convert.ToDateTime(dr["BXT_Addtime"]).Day + "";

StringBuilder Shtml2 = new StringBuilder();

for (int k = 0; k < PageCounter; k++)
{
Shtml2 = null;
Shtml2 = Shtml;

Shtml2.Replace("{$News_Content$}", k.ToString());
string Path = "";
if (k == 0)
{
Path = Pathdir + "\\" + Convert.ToDateTime(dr["BXT_Addtime"]).Year + "" + Convert.ToDateTime(dr["BXT_Addtime"]).Month + "" + Convert.ToDateTime(dr["BXT_Addtime"]).Day + "" + Convert.ToDateTime(dr["BXT_Addtime"]).Hour + "" + Convert.ToDateTime(dr["BXT_Addtime"]).Minute + "" + Convert.ToDateTime(dr["BXT_Addtime"]).Second + ".htm";

}
else
{
Path = Pathdir + "\\" + Convert.ToDateTime(dr["BXT_Addtime"]).Year + "" + Convert.ToDateTime(dr["BXT_Addtime"]).Month + "" + Convert.ToDateTime(dr["BXT_Addtime"]).Day + "" + Convert.ToDateTime(dr["BXT_Addtime"]).Hour + "" + Convert.ToDateTime(dr["BXT_Addtime"]).Minute + "" + Convert.ToDateTime(dr["BXT_Addtime"]).Second + "_" + (k + 1).ToString() + ".htm";
}



Cms.SetHtml(Shtml2, Path, Pathdir);

贴出来了,希望有帮助
雪狼online 2009-05-01
  • 打赏
  • 举报
回复
多贴出点代码,刚才只是个推测
zql2008 2009-05-01
  • 打赏
  • 举报
回复
那要怎么做呢??怎么重新载入呢??有没有说点实际点的呀,

只说个开始的,没说个过程的,结尾的,晕呀
雪狼online 2009-05-01
  • 打赏
  • 举报
回复
7楼说的对啊,你必须在内存中从新载入$News_Content$这个标记了。
zql2008 2009-05-01
  • 打赏
  • 举报
回复
楼上的,那要怎么样才不会被换掉呢???

也就是说,我怎么样才能说每次循环时,再次引用原来的数据呢??

蓝海D鱼 2009-05-01
  • 打赏
  • 举报
回复
Shtml2 = Shtml; 赋值时 是引用
Shtml 也被换掉了
major 2009-05-01
  • 打赏
  • 举报
回复
你第一次将$News_Content$替换成别的内容之后,就不存在$News_Content$这个标记了,所以后面的这句Shtml2.Replace("{$News_Content$}", k.ToString());代码就不会在起作用了。
wlc_win 2009-05-01
  • 打赏
  • 举报
回复
帮顶,看看。
yan_pu 2009-05-01
  • 打赏
  • 举报
回复
你设置断点看看吧,我也不清楚,O(∩_∩)O~
zql2008 2009-05-01
  • 打赏
  • 举报
回复
上面的条件都是有满足的,

关键在于
Shtml2.Replace("{$News_Content$}", k.ToString());

好像只替换一次而以,循环后 对 Shtml2 重新赋值 好像没起到做用似的

因为 赋值完,里面就只有一个{$News_Content$},当替换完时,必需再次向Shtml2重赋值

所以才会出现,开头的:

Shtml2 = null;
Shtml2 = Shtml;

Shtml是最原始的数据

请朋友帮帮忙,看是那是出错了,才导致不行的???????????
qq2013 2009-05-01
  • 打赏
  • 举报
回复
断点,看下!

看你的重要条件是否满足.

当 k=1或 2,3......,
是否满足k < PageCounter
才执行后面的确语句!

5.1快乐
dengyun_1223 2009-05-01
  • 打赏
  • 举报
回复
Up
zql2008 2009-05-01
  • 打赏
  • 举报
回复
怎么没人解决呀,自己顶一下呀
皓月明 2009-05-01
  • 打赏
  • 举报
回复
断点调试一下肯定就能看出来了
雪狼online 2009-05-01
  • 打赏
  • 举报
回复
for (int k = 0; k < PageCounter; k++)
{
//Shtml2 = null;
//Shtml2 = Shtml;
StringBuilder Shtml2 = new StringBuilder(Shtml.ToString());

Shtml2.Replace("{$News_Content$}", k.ToString());
string Path = "";
改成这样试下

62,073

社区成员

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

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

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

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