2008-12-11 6 views
3

Je souhaite afficher les différences entre les versions du même contenu. Au départ, j'ai lancé mon propre WebControl, mais l'algorithme de différenciation que j'ai trouvé était légèrement naïf.ASP.NET WebControl pour afficher les révisions ou les différences de contenu

Est-ce que quelqu'un connaît un code .Net ou un WebControl disponible sur les Internets qui pourraient être utiles? La mise en œuvre que Stackoverflow utilisations, est juste la chose que je cherche par exemple:

alt text

Mise à jour: 12/12/2008 J'ai Enveloppez la mise en œuvre de jsdiff dans un ensemble de commande Web autonome et téléchargé sur le MSDN Code Gallery Text differencing and syntax highlighting ASP.Net WebControls.

Mise à jour: 11/12/2008 Entré à travers le suivant javascript differencing library. J'essaierai de l'emballer dans un WebControl personnalisé. La sortie est similaire à celui utilisé par stackoverflow:

alt text

+0

Je suppose que cela se fait entièrement côté client? Je serais intéressé à faire le travail de diff sur le serveur. Un diff qui peut afficher un 'contexte' limité (plutôt que le fichier entier) peut diff varier les fichiers volumineux sans trop transférer au client. – bacar

Répondre

1

J'utilise le js lib que vous mentionnez.

Inclure le fichier .js dans une balise de script, ajoutez un asp nommé literal à la page

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

et ajouter au code-behind:

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); 

Dans mon cas, j'avais 2 contrôles qui affichent également les valeurs d'origine, vous pouvez inclure les chaînes littéralement dans la fonction diffString(). Le remplacement() convertit les sauts de ligne en sauts de ligne HTML.

Questions connexes