public static string GetUserErrorMessageOrDefault(ModelError modelError, ModelStateEntry entry)
        {
            if (!string.IsNullOrEmpty(modelError.ErrorMessage))
            {
                return modelError.ErrorMessage;
            }

            if (entry == null)
            {
                return string.Empty;
            }

            var attemptedValue = entry.AttemptedValue ?? "null";
            return Resources.FormatCommon_ValueNotValidForProperty(attemptedValue);
        }
        public void ProcessDto_RequiredFieldNull_RaisesModelErrorWithMessage()
        {
            // Arrange
            var model             = new Person();
            var containerMetadata = GetMetadataForObject(model);

            var bindingContext = CreateContext(containerMetadata);

            ComplexModelDto dto = new ComplexModelDto(containerMetadata, containerMetadata.Properties);
            TestableMutableObjectModelBinder testableBinder = new TestableMutableObjectModelBinder();

            // Make ValueTypeRequired invalid.
            var propertyMetadata = dto.PropertyMetadata.Single(p => p.PropertyName == "ValueTypeRequired");

            dto.Results[propertyMetadata] =
                new ComplexModelDtoResult(null, new ModelValidationNode(propertyMetadata, "theModel.ValueTypeRequired"));

            // Act
            testableBinder.ProcessDto(bindingContext, dto);

            // Assert
            ModelStateDictionary modelStateDictionary = bindingContext.ModelState;

            Assert.Equal(false, modelStateDictionary.IsValid);
            Assert.Equal(1, modelStateDictionary.Count);

            // Check ValueTypeRequired error.
            ModelState modelState;

            Assert.True(modelStateDictionary.TryGetValue("theModel.ValueTypeRequired", out modelState));
            Assert.Equal(1, modelState.Errors.Count);

            ModelError modelError = modelState.Errors[0];

            Assert.Null(modelError.Exception);
            Assert.NotNull(modelError.ErrorMessage);
            Assert.Equal("Sample message", modelError.ErrorMessage);
        }
 private static void AssertRequiredError(string key, ModelError error)
 {
     // Mono issue - https://github.com/aspnet/External/issues/19
     Assert.Equal(PlatformNormalizer.NormalizeContent(
         string.Format("The {0} field is required.", key)), error.ErrorMessage);
     Assert.Null(error.Exception);
 }
 private static void AssertRequiredError(string key, ModelError error)
 {
     Assert.Equal(string.Format("The {0} field is required.", key), error.ErrorMessage);
     Assert.Null(error.Exception);
 }