我正在根据metadata.cs
文件中的属性执行验证。我正在使用Entity framework 4.0并使用wcf ria服务。我想知道在silverlight中asp.net中Page.IsValid
的等价物是什么?在保存之前,如何确保实体处于正确状态?如果我不确保这个例外火灾看起来非常难看。我找到了一个名为entityName.ValidationErrorCount的属性,所以如果我的实体名为User
我objUser.ValidationErrorCount
小于等于0我保存它。此方法的问题在于,如果用户未在任何文本框中输入值,则随后实体中的所有值都为空。因此ValidationErrorCount属性返回0,因为所有都是空值,因此我的程序尝试保存实体,但实际上实体处于不正确的状态,因此异常触发。我如何解决这个问题?
我希望我很清楚。如果没有,请告诉我。在此先感谢:)
答案 0 :(得分:2)
您可以使用Validator类(来自System.ComponentModel.DataAnnotations)验证实体 如此命名空间(其中entity是对要验证的实体的引用):
List<ValidationResult> validationResults = new List<ValidationResult>();
ValidationContext validationContext = new ValidationContext(entity, null, null);
bool isValid = Validator.TryValidateObject(entity, validationContext, validationResults, true);
或者,您使用的是DataForm控件吗?如果是这样,通过调用DataForm上的ValidateItem()方法,可以更简单地检查当前项是否有效。这将返回一个布尔值,指示当前项是否有效(您还可以检查DataForm的IsItemValid属性)。它还将更新绑定控件以显示其验证状态。如果您没有使用DataForm,那么如果可以,它肯定会更容易。否则,只需将验证结果添加到实体的ValidationErrors属性:
foreach (ValidationResult result in validationResults)
entity.ValidationErrors.Add(result);
希望这会有所帮助......
克里斯