我们正在使用复杂类型来管理这样我们的翻译领域:实体框架复杂类型自定义验证,验证停止递归
[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);
}
}
}
我们需要的字段存在。但在某些情况下,整个翻译的领域是可选的,因为在:
public class Question
{
...
[Optional(ErrorMessage="Foo")]
public Translated Description { get; set; }
...
}
但是,它似乎是可选属性被计算,当它返回false没有什么,结果完成。
class OptionalAttribute : ValidationAttribute
{
public override bool IsValid(object value)
{
return false;
}
}
当我把可选属性在非复合型它能正常工作,错误信息将永远是富。
最终目标是在两种情况下都允许描述为空,但是当其中一个字段被填充时,错误当然应该传播。
停止验证递归会导致该领域是可选的,但它也能防止万一的领域,却被填写的验证。
如何做到这一点任何想法?
Btw。 EF CTP5是旧版本。目前verwion被称为EF 4.1 RTW(最终版本)。 – 2011-04-12 18:21:36
我会用新版本测试这种情况并回报。 – 2011-04-13 18:09:35
我在原始问题中勾画的情况依然成立。我想我可以覆盖我们的实体的Validate方法来检查它是否是可选的,如果是这种情况,只有在它不是空的情况下传播它的验证结果。 关于如何最好地实现这一点的任何建议?我也担心用自己的代码覆盖MVC/Framework提供的代码。 – 2011-04-16 19:19:38