ASP.NET WebControl для отображения изменений или различий в содержимом
-
21-08-2019 - |
Вопрос
Я хотел бы отобразить различия между версиями одного и того же контента.Изначально я запустил свой собственный WebControl, однако алгоритм дифференцирования, который я придумал, был немного наивным.
Кто-нибудь знает какой-нибудь .Сетевой код или WebControl в Интернете, который мог бы быть полезен?Реализация, которую использует stackoverflow, - это как раз то, что я ищу, например:
Обновить:12/12/2008 Я завернул реализацию jsdiff в автономную сборку веб-элемента управления и загрузил ее в галерею кода MSDN Различение текста и подсветка синтаксиса ASP.Net WebControls.
Обновить:11/12/2008 Наткнулся на следующее библиотека различий javascript.Будем экспериментировать с упаковкой его в пользовательский WebControl.Результат выглядит аналогично тому, который используется stackoverflow:
Решение
Я использую библиотеку 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-разрывы строк.