acc, dopo 3 giorni di test e delusioni su controlli trovati su internet, oltre a quelli proposti in questa discussione sono arrivato alla conclusione:
me lo faccio da solo!
troppe feature, molte delle quali inutili, fanno si che il tempo risparmiato allo sviluppo viene completamente reinvestito nella configurazione...
visto che trovo più gratificante sviluppare che configurare, ecco qui come ho operato, è solo l'inizio, ma sono a buon punto e sicuramente mi sento sulla strada giusta.
per prima cosa c'è la TextBox dove l'utente scrive:
codice:
<asp:textbox ID="TextBox1" runat="server" Width="536px" Height="304px" TextMode="MultiLine"></asp:textbox>
poi ci sono una serie di bottoni HTML che lanciano javascript:
codice:
<input name="button" type="button" onClick="document.Form1.TextBox1.value+=''" value="B">
<input name="button2" type="button" onClick="document.Form1.TextBox1.value+=''" value="I">
...
delle immagini per inserire emoticon:
codice:
[img]emoticon/001.gif[/img]
un bottone aspx sulla pagina ha questa funzione, che scrive il testo della TextBox1 in una label che si chiama lblPreview
codice:
private void Button2_Click(object sender, System.EventArgs e)
{
lblPreview.Text = ForumMateLib.TextManagement.convertInHtml(TextBox1.Text);
}
ed infine ho la classe ForumMateLib.TextManagement che si occupa di convertire il testo della TextBox in html:
codice:
using System;
using System.Web;
using System.Text;
namespace ForumMateLib
{
public class TextManagement
{
public static string convertInHtml(string text)
{
StringBuilder sb = new StringBuilder();
sb.Append(HttpContext.Current.Server.HtmlEncode(text).ToString());
sb.Replace("\n","
");
createEmoticons(sb);
createCustomTags(sb);
return sb.ToString();
}
private static void createCustomTags(StringBuilder text)
{
text.Replace("","<span class=\"boldMessage\">");
text.Replace("","</span>");
text.Replace("","<span class=\"italicMessage\">");
text.Replace("","</span>");
...
...
createLinks(text);
}
private static void createEmoticons(StringBuilder text)
{
text.Replace(":-)","<img src=\"emoticon/001.gif\" alt=\":-)\" />");
...
...
}
}
}
c'è ancora un po' di hardcoding, non mi piace molto usare questa serie di text.Replace, significa che ad ogni cambiamento o aggiunta di tag, devo riaprire questa classe e ricompilarla, magari sarebbe meglio leggere dal web.config o da un'XML.
ultimo passo: creare con la textbox e i bottoni un controllo ascx e trasportarmelo in giro più facilmente.
ciao!