2011-11-28 110 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