2011-03-24 22 views
0

我有一個網站,在很大程度上依賴於克里奧爾解析器允許維基站點(維基本身,論壇等)ASP:文字綁定特質

在維基的幾個領域格式化,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

想我會發布我去的解決方案。這真的很簡單。我只是創建我的渲染引擎並在它的靜態版本,創建了我可以在我的綁定表達式中使用擴展方法:

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

完成。