DbEntry 开发实践:Wiki 系统(四)
2009-12-03 22:04
141 查看
上回书说到,VisualWiki系统已经有了显示、编辑、历史页面,不过,程序里也有了一小段重复的代码,所以我们这一次先进行一点儿重构工作。
首先,在VisualWiki.Models里建立一个Helpers目录,然后在其中创建一个CommonHelper类,并且把我们设置HyperLink的代码整理成一个SetLink函数:
代码public static string GenerateShowText(string text)
{
return ProcessSymbol(text, "[[", "]]",
title =>
{
var url = new UrlBuilder("Show.aspx");
url.Add(Const.TitleName, RemoveHtmlTag(title));
var link = HtmlBuilder.New.a(url.ToString()).include(title).end;
return link.ToString();
});
}
public static string RemoveHtmlTag(string text)
{
return ProcessSymbol(text, "<", ">", null);
}
public static string ProcessSymbol(string text, string left, string right,
CallbackHandler<string, string> callback)
{
var ret = new StringBuilder();
int last = 0;
while (true)
{
int m = text.IndexOf(left, last);
if (m >= last)
{
int n = text.IndexOf(right, m);
if (n > m)
{
ret.Append(text.Substring(last, m - last));
if(callback != null)
{
var inner = text.Substring(m + left.Length, n - m - left.Length);
ret.Append(callback(inner));
}
last = n + right.Length;
continue;
}
}
ret.Append(text.Substring(last));
break;
}
return ret.ToString();
}
运行单元测试,全部通过,既然有了可以工作的GenerateShowText函数,就把它加入Show.aspx里吧,需要修改的地方并不多,一个是原来的article.Content,一个是h.Content。修改之后,运行程序,进入Home页,编辑它,加入有双中括号的内容,比如Hello,保存,回到Show.aspx,显示Hello为链接,点击此链接,进入Hello页,在这里可以进行Hello页编辑、浏览历史等操作了。就是回不去Home页,恩,在Main.master里加个Home的链接吧:
<a href="Show.aspx?title=Home">Home</a> |
现在,我们的Wiki系统已经基本成型,显示、编辑、新建、历史都有了,我们还想给它加入路径功能,不过,先把代码提交了吧。目前的代码:VisualWiki4.7z
未完待续……
首先,在VisualWiki.Models里建立一个Helpers目录,然后在其中创建一个CommonHelper类,并且把我们设置HyperLink的代码整理成一个SetLink函数:
代码public static string GenerateShowText(string text)
{
return ProcessSymbol(text, "[[", "]]",
title =>
{
var url = new UrlBuilder("Show.aspx");
url.Add(Const.TitleName, RemoveHtmlTag(title));
var link = HtmlBuilder.New.a(url.ToString()).include(title).end;
return link.ToString();
});
}
public static string RemoveHtmlTag(string text)
{
return ProcessSymbol(text, "<", ">", null);
}
public static string ProcessSymbol(string text, string left, string right,
CallbackHandler<string, string> callback)
{
var ret = new StringBuilder();
int last = 0;
while (true)
{
int m = text.IndexOf(left, last);
if (m >= last)
{
int n = text.IndexOf(right, m);
if (n > m)
{
ret.Append(text.Substring(last, m - last));
if(callback != null)
{
var inner = text.Substring(m + left.Length, n - m - left.Length);
ret.Append(callback(inner));
}
last = n + right.Length;
continue;
}
}
ret.Append(text.Substring(last));
break;
}
return ret.ToString();
}
运行单元测试,全部通过,既然有了可以工作的GenerateShowText函数,就把它加入Show.aspx里吧,需要修改的地方并不多,一个是原来的article.Content,一个是h.Content。修改之后,运行程序,进入Home页,编辑它,加入有双中括号的内容,比如Hello,保存,回到Show.aspx,显示Hello为链接,点击此链接,进入Hello页,在这里可以进行Hello页编辑、浏览历史等操作了。就是回不去Home页,恩,在Main.master里加个Home的链接吧:
<a href="Show.aspx?title=Home">Home</a> |
现在,我们的Wiki系统已经基本成型,显示、编辑、新建、历史都有了,我们还想给它加入路径功能,不过,先把代码提交了吧。目前的代码:VisualWiki4.7z
未完待续……
相关文章推荐
- DbEntry 开发实践:Wiki 系统(二)
- DbEntry 开发实践:Wiki 系统(三)
- DbEntry 开发实践:Wiki 系统(一)
- DbEntry 开发实践:Wiki 系统(五)
- DbEntry 开发实践:Wiki 系统(六)
- DbEntry 开发实践:Wiki 系统(七)
- 好文莫过于此:搜索引擎系统学习与开发实践总结(张合福的专栏)
- 【实践驱动开发3-004】TI WL1835MODCOM8 在android的移植 - 系统结构初始化和参考列表
- [实践]基于WebSocket,Spring开发消息系统后台
- 升讯威微信营销系统开发实践:(2)功能设计与架构设计
- 升讯威微信营销系统开发实践:(5) Github 源码:微信接口的 .NET 封装
- 小米网抢购系统开发实践和我的个人观察
- 进阶第21课时,实践,简易银行系统开发第四版
- “米粉节”背后的故事——小米网抢购系统开发实践
- 提高第40课时,实践,简易银行系统开发
- 工作室准备开展3个系统项目的开发实践
- “米粉节”背后的故事——小米网抢购系统开发实践
- 小米网抢购系统开发实践和我的个人观察
- 开发操作系统实践 (一)——写给LinDos系统开发的前言
- 升讯威微信营销系统开发实践:(4)所见即所得的微官网 [源码]