Removing BaseController from MusicStore

TryUpdateModelAsync was added to Controller type which removes the need
for this type
This commit is contained in:
Pranav K 2014-07-25 10:11:54 -07:00
parent 907f05acf5
commit 5bace02518
5 changed files with 4 additions and 3435 deletions

View File

@ -7,7 +7,7 @@ using MusicStore.Models;
namespace MusicStore.Apis
{
public class AlbumsApiController : BaseController
public class AlbumsApiController : Controller
{
private readonly MusicStoreContext _storeContext;

View File

@ -6,7 +6,7 @@ using MusicStore.Models;
namespace MusicStore.Apis
{
public class ArtistsApiController : BaseController
public class ArtistsApiController : Controller
{
private readonly MusicStoreContext _storeContext;

View File

@ -5,7 +5,7 @@ using MusicStore.Models;
namespace MusicStore.Apis
{
public class GenresApiController : BaseController
public class GenresApiController : Controller
{
private readonly MusicStoreContext _storeContext;

View File

@ -1,62 +0,0 @@
using System;
using System.Linq;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.AspNet.Mvc.ModelBinding;
using Microsoft.AspNet.Routing;
namespace Microsoft.AspNet.Mvc
{
public class BaseController : Controller
{
private IModelBindersProvider _modelBinders;
private IModelMetadataProvider _modelMetadataProvider;
private IEnumerable<IModelValidatorProvider> _validatorProviders;
private IEnumerable<IValueProviderFactory> _valueProviderFactories;
private CompositeModelBinder _modelBinder;
private CompositeValueProvider _compositeValueProvider;
private bool _modelBinderInitialized;
private object _modelBinderInitLocker = new object();
public BaseController()
{
}
public void Initialize(
IModelBindersProvider modelBinders,
IModelMetadataProvider modelMetadataProvider,
IEnumerable<IModelValidatorProvider> validatorProviders,
IEnumerable<IValueProviderFactory> valueProviderFactories)
{
_modelBinders = modelBinders;
_modelMetadataProvider = modelMetadataProvider;
_validatorProviders = validatorProviders;
_valueProviderFactories = valueProviderFactories;
}
protected Task<bool> TryUpdateModelAsync<TModel>(TModel model)
{
LazyInitializer.EnsureInitialized(ref _modelBinder, ref _modelBinderInitialized, ref _modelBinderInitLocker, () =>
{
var factoryContext = new ValueProviderFactoryContext(Context, ActionContext.RouteData.Values);
_compositeValueProvider = new CompositeValueProvider(_valueProviderFactories.Select(vpf => vpf.GetValueProvider(factoryContext)));
return new CompositeModelBinder(_modelBinders);
});
var bindingContext = new ModelBindingContext
{
MetadataProvider = _modelMetadataProvider,
Model = model,
ModelState = ModelState,
ValidatorProviders = _validatorProviders,
ModelBinder = _modelBinder,
HttpContext = Context,
ValueProvider = _compositeValueProvider
};
return _modelBinder.BindModelAsync(bindingContext);
}
}
}

File diff suppressed because it is too large Load Diff