複数の値を選択できるようにする選択肢フィールド(AllowMultiple
がtrue)を持つコンテンツ定義(CTD)がSenseNetにあります。 XML定義は、次のようになります。複数の選択肢が選択されているコンテンツをSenseNetにインポートできないのはなぜですか?
<Field name="Status" type="Choice">
<DisplayName>Status</DisplayName>
<Configuration>
<AllowMultiple>true</AllowMultiple>
<Options>
<Option>In Processing</Option>
<Option>In Review</Option>
<Option>Tabled</Option>
<Option>Pending Verification</Option>
<Option>Approved</Option>
</Options>
</Configuration>
</Field>
私が選択した複数のオプションを使用してデータをエクスポートし、このフィールドのXML出力は;
(セミコロン+スペース)との選択オプションを区切ると、次のようになります。
<Status>Pending Verification; Approved</Status>
エクスポートしたデータをインポートしようとすると、エラーInvalidExtraValue
が発生します。
この問題を解決するにはどうすればよいですか?
このコードはごみです。なぜ文字列をリストに変換したいのですか?なぜオブジェクトが時には文字列になるのか、それ以外のときにリストになるのでしょうか?実際の問題は、インポートメソッドがセミコロンをhtml特殊文字の一部と考えると思われます。参照:https://www.google.com/search?q=wiki+xml+html+special+characters&rlz=1C1OPRA_enUS563US647&oq=wiki+xml+html+special+characters&aqs=chrome..69i57.15711j0j7&sourceid=chrome&ie=UTF-8 –
jdweng
コードは、読者が望むほど読みにくくないかもしれませんが、ソースからかなりまっすぐです。これらのケースでは、関数の動作を変更しないことが不可欠です。これがあなたが見ているものです。 SenseNet Contentモデルを理解していれば、オブジェクトパラメータ(文字列、IEnumerable、Listなど)を取らなければならない理由を知ることができます。あなたの疑惑は間違っています。書かれたコードは問題を解決します。 –
答えは大丈夫です、異なるタイプの変換はsensetetに関連しています、彼らは設計によるものです。 3番目のオプションは、オプション(ctd内の属性)の値を使用することです。そのようにすれば、人間が読めるオプションのテキストとオプションの値をスペースなしで同時に使用することができます。 –