ASP.NET WebControl для отображения версий или различий в содержимом

Я хотел бы показать различия между версиями одного и того же контента. Первоначально я развернул свой собственный WebControl, однако алгоритм дифференцирования, который я придумал, был немного наивным.

Кто-нибудь знает какой-либо код .Net или WebControl там в Интернете, которые могут быть полезны? Реализация, которую использует stackoverflow, это просто то, что я ищу, например:

альтернативный текст

Обновление: 12/12/2008 Я обернул реализацию jsdiff в автономную сборку веб-элемента управления и загрузил ее в галерею кодов MSDN. Различение текста и подсветка синтаксиса ASP.Net WebControls .

Обновление: 12/12/2008 Наткнулся на следующую разностную библиотеку javascript . Будем экспериментировать, упаковывая его в пользовательский WebControl. Вывод выглядит аналогично тому, который используется в stackoverflow:

альтернативный текст

11.12.2008 12:41:47
Я предполагаю, что это сделано полностью на стороне клиента? Я был бы заинтересован в проведении различий на сервере. Разница, которая может отображать ограниченный «контекст» (а не весь файл), может различать большие файлы, не передавая слишком много клиенту.
bacar 14.05.2009 10:02:05
1 ОТВЕТ
РЕШЕНИЕ

Я использую JS Lib, которую вы упоминаете.

Включите файл .js в тег скрипта, добавьте именованный asp: Literal на страницу

<asp:Literal ID="litCompare" runat="server">
</asp:Literal>

и добавьте к коду:

litComparison.Text = "<pre id=\"lbDiffPre\" class=\"code\"> </pre>";
ClientScript.RegisterStartupScript(GetType(), "calccompare",
    @"document.getElementById('lbDiffPre').innerHTML = 
    diffString(document.getElementById('" + edit1.ClientID + "').value, 
        document.getElementById('" + edit2.ClientID + "').value).
        replace(/\r\n/g, '<br>';", true);

В моем случае у меня было 2 элемента управления, которые также отображают исходные значения, вы можете включить строки буквально в функцию diffString (). Дополнительный replace () преобразует \ r \ n разрывы строк в разрывы строк HTML.

1
11.12.2008 16:48:00