次のように、複雑な型を使用して翻訳可能なフィールドを管理しています。
[ComplexType]
public class Translated
{
[Required]
public string NL { get; set; }
[Required]
public string EN { get; set; }
[ScaffoldColumn(false)]
public string TranslatedText
{
get
{
return Util.Translate(NL, EN);
}
}
}
フィールドが存在する必要があります。ただし、場合によっては、Translated フィールド全体が次のようにオプションになります。
public class Question
{
...
[Optional(ErrorMessage="Foo")]
public Translated Description { get; set; }
...
}
ただし、Optional属性が計算されるようで、falseを返すと結果は何も行われません。
class OptionalAttribute : ValidationAttribute
{
public override bool IsValid(object value)
{
return false;
}
}
オプションの属性を非複雑な型に配置すると、期待どおりに機能し、エラー メッセージは常に Foo になります。
最終的な目標は、両方のケースで説明を空にできるようにすることですが、フィールドの 1 つが入力されると、もちろんエラーが伝播するはずです。
検証の再帰を停止すると、フィールドはオプションになりますが、フィールドが入力された場合のフィールドの検証も妨げられます。
これを達成する方法についてのアイデアはありますか?