2011-11-28 30 views

回答

3

在這個答案我想假設你想通過一個可視化編輯器(html文檔)來維護「靜態文本」,允許你的用戶做標題,樣式,大膽等。如果你只是想要一個簡單的大文本框可以簡化。

開始通過對數據的角度建立一個新的全球數據類型 - 它的名字(下面的代碼示例中,我把它命名爲Maw.Content),並給它這兩個領域:

  • FieldKey串(32)(小工具:默認文本框)
  • FieldContent字符串(無限)(小工具:Composite.Widgets.String.VisualXhtmlEditor)

一旦您保存新數據類型,您可以添加'記錄' - 並指定一個字段鍵和相關內容。

這應該照顧管理的內容 - 你得到的UI應該是非常用戶友好的。您可以右鍵單擊樹中的數據類型,然後使用命令「在內容透視圖中顯示」,這將使您的數據類型顯示在「內容」|「網站項目。這樣您的用戶就不必使用Data透視圖。

考慮將用戶對數據文件夾的訪問限制爲「編輯」,以防您不需要用戶添加/刪除項目。右鍵單擊包含數據項的文件夾並選擇「編輯權限」。

從一場名爲 在你的用戶控件,你可以抓住相關的具體FieldKey這樣的HTML輸出XHTML:

using System; 
using System.Linq; 
using System.Xml.Linq; 
using System.Web.UI; 
using Composite.Data; 
using Composite.Core.Xml; 

public partial class Default2 : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     string fieldKey = "SomeKeyHere"; 
     string xhtmlString; 

     using(var connection = new DataConnection()) 
     { 
      xhtmlString = connection.Get<Maw.Content>().Where(f => f.FieldKey == fieldKey).Select(f => f.FieldContent).FirstOrDefault(); 
     } 

     if (xhtmlString != null) 
     { 
      XhtmlDocument htmlDoc = XhtmlDocument.Parse(xhtmlString); 
      foreach (XNode bodyNode in htmlDoc.Body.Nodes()) 
      { 
       this.Controls.Add(new LiteralControl(bodyNode.ToString())); 
      } 
     } 
     else 
     { 
      this.Controls.Add(new LiteralControl("Unknown FieldKey: " + fieldKey));    
     } 

    } 
} 
+0

這是長期工作在頭元素沒有什麼,並且* FieldContent *本身不包含任何函數。 –

+0

謝謝,這真的幫了我很多。 – magnattic

+0

當通過示例代碼檢索數據時,我遇到了問題,我只能添加位於子節點內的內容。如果我在身體中有明文,該怎麼辦?或者甚至更好:我如何將整個身體內容作爲一個字符串(包括HTML標籤)來獲取?我無法找到一個方法。 – magnattic