ASP.NET WebControl для отображения версий или различий в содержимом - PullRequest
3 голосов
/ 11 декабря 2008

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

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

alt text

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

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

alt text

1 Ответ

1 голос
/ 11 декабря 2008

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

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

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

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

<code>litComparison.Text = "<pre id=\"lbDiffPre\" class=\"code\">
"; ClientScript.RegisterStartupScript (GetType (), «calccompare», @ "document.getElementById ('lbDiffPre'). innerHTML = diffString (document.getElementById ('"+ edit1.ClientID +"') .value, document.getElementById ('"+ edit2.ClientID +"') .value). заменить (/ \ r \ n / g, '
'; ", верно);

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

...