public override IEnumerable<ModelValidationResult> Validate(ModelMetadata metadata, object container) { // Per the WCF RIA Services team, instance can never be null (if you have // no parent, you pass yourself for the "instance" parameter). ValidationContext context = new ValidationContext(container ?? metadata.Model, null, null); context.DisplayName = metadata.GetDisplayName(); ValidationResult result = Attribute.GetValidationResult(metadata.Model, context); if (result != ValidationResult.Success) { return new ModelValidationResult[] { new ModelValidationResult { Message = result.ErrorMessage } }; } return new ModelValidationResult[0]; }
public override IEnumerable<ModelValidationResult> Validate(ModelMetadata metadata, object container) { // Per the WCF RIA Services team, instance can never be null (if you have // no parent, you pass yourself for the "instance" parameter). string memberName = metadata.GetDisplayName(); ValidationContext context = new ValidationContext(container ?? metadata.Model) { DisplayName = memberName, MemberName = memberName }; ValidationResult result = Attribute.GetValidationResult(metadata.Model, context); if (result != ValidationResult.Success) { // ModelValidationResult.MemberName is used by invoking validators (such as ModelValidationNode) to // construct the ModelKey for ModelStateDictionary. When validating at type level we want to append the // returned MemberNames if specified (e.g. person.Address.FirstName). For property validation, the // ModelKey can be constructed using the ModelMetadata and we should ignore MemberName (we don't want // (person.Name.Name). However the invoking validator does not have a way to distinguish between these two // cases. Consequently we'll only set MemberName if this validation returns a MemberName that is different // from the property being validated. string errorMemberName = result.MemberNames.FirstOrDefault(); if (String.Equals(errorMemberName, memberName, StringComparison.Ordinal)) { errorMemberName = null; } var validationResult = new ModelValidationResult { Message = result.ErrorMessage, MemberName = errorMemberName }; return new ModelValidationResult[] { validationResult }; } return Enumerable.Empty<ModelValidationResult>(); }
private static string GetResourceCommon(HttpActionContext actionContext, ModelMetadata modelMetadata, object incomingValue, Func<HttpActionContext, string> resourceAccessor) { string displayName = modelMetadata.GetDisplayName(); string errorMessageTemplate = resourceAccessor(actionContext); return Error.Format(errorMessageTemplate, incomingValue, displayName); }
public void ReturnsTypeNameWhenPropertyNameAndDisplayNameAreNull() { // Arrange Mock<ModelMetadataProvider> provider = new Mock<ModelMetadataProvider>(); ModelMetadata metadata = new ModelMetadata(provider.Object, null, null, typeof(object), null); // Act string result = metadata.GetDisplayName(); // Assert Assert.Equal("Object", result); }
public void ReturnsDisplayNameWhenSet() { // Arrange Mock<ModelMetadataProvider> provider = new Mock<ModelMetadataProvider>(); ModelMetadata metadata = new ModelMetadata(provider.Object, null, null, typeof(object), "PropertyName") { DisplayName = "Display Name" }; // Act string result = metadata.GetDisplayName(); // Assert Assert.Equal("Display Name", result); }