如何突出.NET Web应用程序中两个版本的文本之间的差异?

时间:2009-03-06 21:10:14

标签: asp.net-3.5

我在呼叫中心部门工作的Web应用程序已经支持了大约2年了。该应用程序是使用SQL Server 2005数据库在ASP.NET 3.5中编写的。我被要求扩展通话详细信息部分,以允许座席编辑当前的通话记录,并能够恢复到之前的版本。现在,这一切都很酷但现在经理希望能够点击任何特定的音符并查看所有带黄色突出显示的更改的编辑(如果删除了某些内容,他希望查看删除的文本划掉)。实际上,我需要的东西与Stackoverflow处理问题编辑的方式非常相似。我一直在考虑如何解决这个问题,在进行研究和Google-ing之后,我当然还不确定要走哪条路线。我是.NET开发的新手。关于突出UI变化的最佳技术的任何想法?我担心每次更改时都要存储整个笔记的副本,因为经理希望能够轻松查看笔记并在发送之前恢复到任何版本(不仅仅是最新版本)。每月电话报告给我们的VIP客户。由于OFTEN部门改变了对事物的看法,我想确保新功能可扩展且易于维护。任何想法将不胜感激。我真的只是想找人指点我正确的方向;也许有一些工具可以在谷歌查找中使用有用的推荐关键词等。

4 个答案:

答案 0 :(得分:2)

这将很难做到。

  1. 您需要一个“文本编辑器”控件,它不仅可以编辑文本,还可以告诉您所做的更改。
  2. 然后,您不仅需要存储最终文本字符串,还需要存储更改列表
  3. 然后,您需要能够显示文本和更改,使用删除线以及插入与更改的不同颜色
  4. 您不仅需要对单个用户的更改执行此操作,而且还需要将每个用户的更改存储在数据库中,并且需要能够一次性显示所有更改
  5. 你的经理应该确实确定他需要这个。

答案 1 :(得分:1)

可以在Any decent text diff/merge engine for .NET?找到一些为您做差异的工具。

这需要像你说的那样存储每个版本。这应该允许您以类似于SO的方式实现它。我似乎记得读过或听过杰夫提到它,但无法找到它,可能是在其中一个SO播客中。

答案 2 :(得分:1)

最简单的方法是存储每个修订版本的文本,然后当用户想要查看差异时,使用diff工具生成突出显示的文本。

这是一些Javascript diff代码: http://ejohn.org/projects/javascript-diff-algorithm/

如果所有计算机都安装了Word,您可以使用Word控件来完成此操作。 TortoiseSVN在其程序目录中有脚本,可以获取两个word文档并生成一个突出显示更改的文档。要看到这个创建c:\ aaa.doc和bbb.doc,然后安装TortoiseSVN并运行:

wscript.exe "C:\program files\tortoisesvn\Diff-Scripts\diff-doc.js" c:\aaa.doc c:\bbb.doc //E:javascript

答案 3 :(得分:0)