asp: буквальные особенности привязки данных - PullRequest
0 голосов
/ 24 марта 2011

У меня есть веб-сайт, который в значительной степени опирается на анализатор 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.

1 Ответ

1 голос
/ 29 марта 2011

Я решил опубликовать решение, с которым пошел.Это было довольно просто на самом деле.Я просто создаю статическую версию своего Render Engine и в ней создал метод расширения, который я мог бы использовать в своих выражениях привязки данных:

<%# ((string)DataBinder.Eval(Container.DataItem, "WikiText"))).Render() %>

Done.

...