2013-07-29 1 views
0

'AccessFolder'라는 사용자 지정 콘텐츠 형식을 만들었습니다. 콘텐츠 형식 목록에서이를 볼 수 있으며 새 형식을 만들 수 있습니다. 새 AccessFolder를 만들 때 내가 만든 편집기 템플릿을 얻습니다. 정보를 입력하고 저장을 클릭하면 Not Found 페이지로 이동하지만 표시기 메시지는 내 AccessFolder가 성공적으로 생성되었음을 알려줍니다.오차드 사용자 지정 콘텐츠 형식이 저장되지 않습니다.

드라이버에서 updater.TryUpdateModel을 사용하여 바인딩 된 모델을 볼 수 있습니다. 모델의 속성에 올바른 값이 지정됩니다.

데이터베이스에 연결되지 않습니다.

AccessFolderPart : AccessFolderPartDriver의

public class AccessFolderPart : ContentPart<AccessFolderPartRecord> 
{ 
    public virtual string Name 
    { 
     get { return Record.Name; } 
     set { Record.Name = value; } 
    } 

    public virtual IEnumerable<RoleRecord> DownloadRoles 
    { 
     get { return Record.DownloadRoles.Select(x => x.RoleRecord); } 
    } 
} 

AccessFolderPartRecord

public class AccessFolderPartRecord : ContentPartRecord 
{ 
    public virtual string Name { get; set; } 
    public virtual List<ContentAccessFolderRoleRecord> DownloadRoles { get; set; } 
} 

관련 조각

protected override DriverResult Editor(AccessFolderPart part, dynamic shapeHelper) 
    { 
     var viewModel = new AccessFolderViewModel(part, _roleService.GetRoles()); 
     return ContentShape("Parts_AccessFolder_Edit",() => 
      shapeHelper.EditorTemplate(TemplateName: templateName, Model: viewModel, Prefix: Prefix)); 
    } 

    protected override DriverResult Editor(AccessFolderPart part, Orchard.ContentManagement.IUpdateModel updater, dynamic shapeHelper) 
    { 

     var viewModel = new AccessFolderViewModel { Part = part }; 
     updater.TryUpdateModel(viewModel, Prefix, null, null); 

     if (part.ContentItem.Id != 0) 
     { 
      _roleService.UpdateRolesForAccessFolder(part.ContentItem, part.DownloadRoles); 
     } 

     return Editor(part, shapeHelper); 

    } 

나는 금요일부터이 일에 매달 렸습니다. 이전에 사용자 지정 형식을 만들었으므로 아무런 문제가 없었습니다. 내가 여기서 잘못한 것을 볼 수는 없다.

public class AccessFolderPartHandler : ContentHandler 
{ 
    public AccessFolderPartHandler(IRepository<AccessFolderPartRecord> repository) 
    { 
     Filters.Add(StorageFilter.For(repository)); 
    } 
} 
+0

나요 콘텐츠 처리기 내에 저장소 필터를 추가해야한다는 것을 기억하십니까? –

+0

@BrandonJoyce 네, 이미 가지고 있습니다. 나는 그것을 반영하기 위해 질문을 업데이트했다. –

+0

로그 파일이 없으면 문제를 찾을 수 없습니다. 로그 파일을 여기에 게시하면 도움이됩니다. –

답변

0

난 당신이 드라이버에 적절한 매핑을 누락 생각 : -

업데이트 추가 여기 컨텐츠 핸들러 클래스

핸들러에 대한 한 줄의

if (updater.TryUpdateModel(viewModel, Prefix, null, null)) 
      { 
       part.Name= viewModel.Name; 

       if (part.ContentItem.Id != 0) 
       { 
        _roleService.UpdateRolesForAccessFolder(part.ContentItem, part.DownloadRoles); 
       } 
      }