3

Composite C1 で、バックエンドを介してページで使用される ASP.NET ユーザーコントロールの静的テキストを管理する方法はありますか?

4

1 に答える 1

3

この回答では、ビジュアル エディター (html ドキュメント) を介して「静的テキスト」を維持し、ユーザーが見出し、スタイリング、太字などを実行できるようにすることを想定しています。簡素化できます。

データ パースペクティブで新しいグローバル データ タイプを作成することから始めます。名前を付け (以下のコード サンプルでは、​​Maw.Content と名付けました)、次の 2 つのフィールドを指定します。

  • FieldKey string(32) (ウィジェット: デフォルトの TextBox)
  • FieldContent文字列(無制限) (ウィジェット: Composite.Widgets.String.VisualXhtmlEditor)

新しいデータ型を保存したら、それに「レコード」を追加して、フィールド キーと関連コンテンツを指定できます。

これにより、コンテンツの管理が行われます。得られる UI は非常にユーザー フレンドリーになるはずです。ツリーでデータ タイプを右クリックし、[コンテンツ パースペクティブに表示] コマンドを使用すると、データ タイプが [コンテンツ] | [コンテンツ] に表示されます。ウェブサイトのアイテム。この方法では、ユーザーはデータ パースペクティブをまったく使用する必要がありません。

ユーザーがアイテムを追加/削除する必要がない場合は、データ フォルダーへのユーザー アクセスを "編集" のみに制限することを検討してください。データ項目を含むフォルダーを右クリックし、[権限の編集] を選択します。

名前付きフィールドからの XHTML の出力 ユーザー コントロールでは、次のように特定の FieldKey に関連する html を取得できます。

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));            
        }

    }
}
于 2011-11-28T17:43:46.373 に答える