6

Umbraco サイトのバックエンド用にカスタム ユーザー コントロールを作成しました。これにより、管理者はコンテンツ ツリーをナビゲートしなくても、ノードの特定のフィールドをすばやく更新できます。

これまでのところ、コードは期待どおりに機能しています。単純な true/false プロパティを問題なく更新できます。ただし、カスタム データ型のプロパティを更新しようとしていて、問題が発生しています。

データ型自体は、一連の可用性ステータスをリストする単純なドロップダウンです。利用可能、利用不可、販売済み、予約済み。データ型はテキスト値を格納しています。

true/false プロパティを更新できるようにするコードを次に示します。

public void ChangeInteractiveStatus(string nodeId, bool chkValue)
{
    var cs = ApplicationContext.Current.Services.ContentService;
    var apartment = cs.GetById(Convert.ToInt32(nodeId));
    apartment.SetValue("displayOnInteractive", chkValue);
    cs.SaveAndPublish(apartment);
}

このプロパティのデータ型は通常の true/false データ型であるため、これは問題なく機能します。

カスタムドロップダウンリストのデータ型の値を変更するために使用しているコードは次のとおりです。

public void ChangeAvailabilityStatus(string nodeId, string status)
{
    var cs = ApplicationContext.Current.Services.ContentService;
    var apartment = cs.GetById(Convert.ToInt32(nodeId));            
    apartment.SetValue("status", status);
    cs.SaveAndPublish(apartment);
}

ご覧のとおり、違いはほとんどありませんが、このコードは機能していません。

上記のコードでプロパティを更新したときに何が起こっていたかを確認するために、umbraco.config ファイルを確認したところ、問題のプロパティが次のように表示されていることがわかりました。

<status><![CDATA[]]></status>

ただし、コンテンツ ツリーの値を (管理者コントロールを使用せずに) 変更すると、値は次のように適切に保存されます。

<status><![CDATA[Sold]]></status>

なんらかの理由で、値を更新しようとすると拒否され、その理由がわかりません。

参考までに、値を次のように入力してみました。

"<![CDATA[" + status + "]]>"

それでも違いはありませんでした。

これを修正する方法を知っている人はいますか?プロパティを正しく更新するにはどうすればよいですか?

ありがとう

4

1 に答える 1