У меня есть веб-сайт, который в значительной степени опирается на анализатор Creole для разрешения форматирования вики в нескольких областях сайта (вики, форум и т. Д.)
В вики Ii использует Literal
элемент управления для отображения визуализированного текста (который содержит фактические элементы HTML, визуализированные из исходного креольского текста).Код в основном выглядит следующим образом:
<asp:literal id="renderedText" runat="server" />
----
string creoleText = db.GetTable<Wiki>().Where(w => w.ID == id).Single().CreoleText;
RenderEngine engine = new RenderEngine();
renderedText.Text = engine.Render(creoleText);
и все работает просто отлично.
Однако, пытаясь выполнить то же самое с помощью привязки данных и использования asp:Repeater
, я не могукажется, чтобы получить текст для визуализации.По сути, я делаю это:
<asp:repeater id="conversationRepeater" runat="server">
<!-- header template, itemtemplate, etc -->
<tr><td>
<asp:literal runat="server"
text='<%# DataBinder.Eval(Container.DataItem, "Content") %>' />
</td></tr>
----
RenderEngine engine = new RenderEngine();
var forumConversation = db.GetTable<ThreadMessage>()
.Select(t => new ThreadMessage
{
ID = t.ID,
Content = engine.Render(t.Content)
}
);
conversationRepeater.DataSource = forumConversation;
conversationRepeater.DataBind();
, и я просто получаю исходный креольский текст, а не визуализированный текст с необходимыми фактическими элементами HTML.