You've already forked linux-packaging-mono
Imported Upstream version 4.6.0.125
Former-commit-id: a2155e9bd80020e49e72e86c44da02a8ac0e57a4
This commit is contained in:
parent
a569aebcfd
commit
e79aa3c0ed
@ -0,0 +1,71 @@
|
||||
namespace System.Web.ModelBinding {
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
public abstract class ModelValidator {
|
||||
protected ModelValidator(ModelMetadata metadata, ModelBindingExecutionContext modelBindingExecutionContext) {
|
||||
if (metadata == null) {
|
||||
throw new ArgumentNullException("metadata");
|
||||
}
|
||||
if (modelBindingExecutionContext == null) {
|
||||
throw new ArgumentNullException("modelBindingExecutionContext");
|
||||
}
|
||||
|
||||
Metadata = metadata;
|
||||
ModelBindingExecutionContext = modelBindingExecutionContext;
|
||||
}
|
||||
|
||||
protected internal ModelBindingExecutionContext ModelBindingExecutionContext { get; private set; }
|
||||
|
||||
public virtual bool IsRequired {
|
||||
get {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
protected internal ModelMetadata Metadata { get; private set; }
|
||||
|
||||
#if UNDEF
|
||||
[SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate", Justification = "This method may perform non-trivial work.")]
|
||||
public virtual IEnumerable<ModelClientValidationRule> GetClientValidationRules() {
|
||||
return Enumerable.Empty<ModelClientValidationRule>();
|
||||
}
|
||||
#endif
|
||||
|
||||
public static ModelValidator GetModelValidator(ModelMetadata metadata, ModelBindingExecutionContext context) {
|
||||
return new CompositeModelValidator(metadata, context);
|
||||
}
|
||||
|
||||
public abstract IEnumerable<ModelValidationResult> Validate(object container);
|
||||
|
||||
private class CompositeModelValidator : ModelValidator {
|
||||
public CompositeModelValidator(ModelMetadata metadata, ModelBindingExecutionContext modelBindingExecutionContext)
|
||||
: base(metadata, modelBindingExecutionContext) {
|
||||
}
|
||||
|
||||
public override IEnumerable<ModelValidationResult> Validate(object container) {
|
||||
bool propertiesValid = true;
|
||||
|
||||
foreach (ModelMetadata propertyMetadata in Metadata.Properties) {
|
||||
foreach (ModelValidator propertyValidator in propertyMetadata.GetValidators(ModelBindingExecutionContext)) {
|
||||
foreach (ModelValidationResult propertyResult in propertyValidator.Validate(Metadata.Model)) {
|
||||
propertiesValid = false;
|
||||
yield return new ModelValidationResult {
|
||||
MemberName = ValueProviderUtil.CreateSubPropertyName(propertyMetadata.PropertyName, propertyResult.MemberName),
|
||||
Message = propertyResult.Message
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (propertiesValid) {
|
||||
foreach (ModelValidator typeValidator in Metadata.GetValidators(ModelBindingExecutionContext)) {
|
||||
foreach (ModelValidationResult typeResult in typeValidator.Validate(container)) {
|
||||
yield return typeResult;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user