114 lines
2.9 KiB
C#
114 lines
2.9 KiB
C#
using System;
|
|
using System.Diagnostics.CodeAnalysis;
|
|
using Microsoft.AspNet.Abstractions;
|
|
using Microsoft.AspNet.Mvc.ModelBinding.Internal;
|
|
|
|
namespace Microsoft.AspNet.Mvc.ModelBinding
|
|
{
|
|
public class ModelBindingContext
|
|
{
|
|
private string _modelName;
|
|
private ModelStateDictionary _modelState;
|
|
|
|
public ModelBindingContext()
|
|
{
|
|
}
|
|
|
|
// copies certain values that won't change between parent and child objects,
|
|
// e.g. ValueProvider, ModelState
|
|
public ModelBindingContext(ModelBindingContext bindingContext)
|
|
{
|
|
if (bindingContext != null)
|
|
{
|
|
ModelState = bindingContext.ModelState;
|
|
ValueProvider = bindingContext.ValueProvider;
|
|
MetadataProvider = bindingContext.MetadataProvider;
|
|
ModelBinder = bindingContext.ModelBinder;
|
|
HttpContext = bindingContext.HttpContext;
|
|
}
|
|
}
|
|
|
|
public object Model
|
|
{
|
|
get
|
|
{
|
|
EnsureModelMetadata();
|
|
return ModelMetadata.Model;
|
|
}
|
|
set
|
|
{
|
|
EnsureModelMetadata();
|
|
ModelMetadata.Model = value;
|
|
}
|
|
}
|
|
|
|
public ModelMetadata ModelMetadata { get; set; }
|
|
|
|
public string ModelName
|
|
{
|
|
get
|
|
{
|
|
if (_modelName == null)
|
|
{
|
|
_modelName = String.Empty;
|
|
}
|
|
return _modelName;
|
|
}
|
|
set { _modelName = value; }
|
|
}
|
|
|
|
[SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly", Justification = "This is writeable to support unit testing")]
|
|
public ModelStateDictionary ModelState
|
|
{
|
|
get
|
|
{
|
|
if (_modelState == null)
|
|
{
|
|
_modelState = new ModelStateDictionary();
|
|
}
|
|
return _modelState;
|
|
}
|
|
set { _modelState = value; }
|
|
}
|
|
|
|
public Type ModelType
|
|
{
|
|
get
|
|
{
|
|
EnsureModelMetadata();
|
|
return ModelMetadata.ModelType;
|
|
}
|
|
}
|
|
|
|
public bool FallbackToEmptyPrefix { get; set; }
|
|
|
|
public HttpContext HttpContext { get; set; }
|
|
|
|
public IValueProvider ValueProvider
|
|
{
|
|
get;
|
|
set;
|
|
}
|
|
|
|
public IModelBinder ModelBinder
|
|
{
|
|
get;
|
|
set;
|
|
}
|
|
|
|
public IModelMetadataProvider MetadataProvider
|
|
{
|
|
get;
|
|
set;
|
|
}
|
|
|
|
private void EnsureModelMetadata()
|
|
{
|
|
if (ModelMetadata == null)
|
|
{
|
|
throw new InvalidOperationException(Resources.ModelBindingContext_ModelMetadataMustBeSet);
|
|
}
|
|
}
|
|
}
|
|
}
|