2015-07-21 4 views
0

я получаю исключение из стекла сопоставителя в моем решении проекта, как следоватьGlass Mapper исключение: Не удается преобразовать значение PermanentRedirect для перечислимого типа

stack trace: 
[MapperException: Can not convert value PermanentRedirect to enum type IELTS.Web.IELTS.Models.Redirections.StatusCodes] 
Glass.Mapper.Sc.DataMappers.SitecoreFieldEnumMapper.GetFieldValue(String fieldValue, SitecoreFieldConfiguration config, SitecoreDataMappingContext context) +280 
Glass.Mapper.Sc.DataMappers.AbstractSitecoreFieldMapper.GetField(Field field, SitecoreFieldConfiguration config, SitecoreDataMappingContext context) +124 

[MapperException: Failed to map field Type with value PermanentRedirect] 
Glass.Mapper.Sc.DataMappers.AbstractSitecoreFieldMapper.GetField(Field field, SitecoreFieldConfiguration config, SitecoreDataMappingContext context) +326 
Glass.Mapper.AbstractDataMapper.MapCmsToProperty(AbstractDataMappingContext mappingContext) +29 
Glass.Mapper.Configuration.AbstractTypeConfiguration.MapPropertiesToObject(Object obj, IAbstractService service, AbstractTypeCreationContext context) +158 

[MapperException: Failed to map property Type on IELTS.Web.IELTS.Models.Redirections.Redirection] 
Glass.Mapper.Configuration.AbstractTypeConfiguration.MapPropertiesToObject(Object obj, IAbstractService service, AbstractTypeCreationContext context) +488 
Glass.Mapper.Pipelines.ObjectConstruction.Tasks.CreateConcrete.CreateConcreteTask.CreateObject(ObjectConstructionArgs args) +295 
Glass.Mapper.Pipelines.ObjectConstruction.Tasks.CreateConcrete.CreateConcreteTask.Execute(ObjectConstructionArgs args) +215 
Glass.Mapper.Pipelines.AbstractPipelineRunner`2.Run(T args) +225 
Glass.Mapper.AbstractService.InstantiateObject(AbstractTypeCreationContext abstractTypeCreationContext) +170 
Glass.Mapper.Sc.SitecoreService.CreateType(Type type, Item item, Boolean isLazy, Boolean inferType, Object[] constructorParameters) +265 
Glass.Mapper.Sc.SitecoreService.CreateType(Item item, Boolean isLazy, Boolean inferType) +109 
Glass.Mapper.Sc.SitecoreContext.GetCurrentItem(Boolean isLazy, Boolean inferType) +90 

IELTS.Web.IELTS.Controllers.RedirectionController.Redirect() in c:\IDPNow\Trunk\src\IELTS.Web\IELTS\Controllers\RedirectionController.cs:15 
lambda_method(Closure , ControllerBase , Object[]) +79 

System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters) +261 
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +39 
System.Web.Mvc.<>c__DisplayClass15.<InvokeActionMethodWithFilters>b__12() +124 
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation) +681242 
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation) +681242 
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters(ControllerContext controllerContext, IList`1 filters, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +307 
System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName) +345 

Мой класс рендеринга выглядит, как показано ниже,

public class Redirection : RenderingModel 
    { 
     [SitecoreField("Destination")] 
     public virtual Glass.Mapper.Sc.Fields.Link Destination { get; set; } 

     [SitecoreField("Type")] 
     public virtual StatusCodes Type { get; set; } 
    } 

    public enum StatusCodes 
    { 
     Permanent = 301, 
     Temporary = 302 
    } 

мой контроллер метод выглядит так,

public ActionResult Redirect() 
     { 
      var context = new SitecoreContext(IdpTemplates.CurrentContext); 

      var redirection = context.GetCurrentItem<Redirection>(); 

      return new RedirectResult(redirection.Destination.Url, Convert.ToInt32(redirection.Type) == 301); 
     } 

in above method Я получаю исключение при перенаправлении var = co ntext.GetCurrentItem(); линия.

+1

Добро пожаловать stackoverflow ..! Фактически, вы должны опубликовать часть кода, вызывающую ошибку. Итак, мы можем думать, что должно быть ошибкой. Теперь вы просто публикуете свой журнал ошибок. Мы не можем найти ошибку, просто увидим журнал. Нам нужно знать код. Хорошо..! Итак, [edit] (http://stackoverflow.com/posts/31529878/edit) ваш пост, добавив код, который вы пробовали. –

ответ

0

Ваше полевое значение содержит 'PermanentRedirect', но ваше перечисление не имеет этого значения. Он имеет: «Постоянный» и «Временный».

Имена должны иметь точное соответствие (с учетом регистра). Может быть, вы изменили его в определенный момент времени? Или, может быть, у вас неправильное значение по умолчанию?