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

StackOverflow https://stackoverflow.com/questions/359214

  •  21-08-2019
  •  | 
  •  

Вопрос

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

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

alt text

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

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

alt text

Это было полезно?

Решение

Я использую библиотеку js, о которой вы упомянули.

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

<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() преобразует разрывы строк в HTML-разрывы строк.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top