/
GlassModelBinderProvider.cs
37 lines (31 loc) · 1.1 KB
/
GlassModelBinderProvider.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
using System;
using System.Web.Mvc;
using Glass.Mapper.Sc;
using Sitecore.Diagnostics;
namespace GlassModelBinding
{
public class GlassModelBinderProvider : IModelBinderProvider
{
private readonly Type _itemBaseType;
private readonly Type _parametersBaseType;
public GlassModelBinderProvider(Type itemBaseType, Type parametersBaseType)
{
Assert.ArgumentNotNull(itemBaseType, "itemBaseType");
Assert.ArgumentNotNull(parametersBaseType, "parametersBaseType");
_itemBaseType = itemBaseType;
_parametersBaseType = parametersBaseType;
}
public IModelBinder GetBinder(Type modelType)
{
if (_parametersBaseType.IsAssignableFrom(modelType))
{
return new GlassParametersModelBinder(new GlassHtml(SitecoreContext.GetFromHttpContext()));
}
if (_itemBaseType.IsAssignableFrom(modelType))
{
return new GlassItemModelBinder(SitecoreContext.GetFromHttpContext());
}
return null;
}
}
}