Composite C1 で、バックエンドを介してページで使用される ASP.NET ユーザーコントロールの静的テキストを管理する方法はありますか?
1 に答える
この回答では、ビジュアル エディター (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));
}
}
}