2013-07-29 34 views
0

我已经创建了一个名为“AccessFolder”的自定义内容类型。我可以在内容类型列表中看到它,并可以创建一个新的。当我创建一个新的AccessFolder时,我得到了我为它创建的编辑器模板。输入信息并点击保存后,我被引导到一个Not Found页面,但指示符消息告诉我我的AccessFolder已成功创建。果园自定义内容类型不保存

在驱动程序中,使用updater.TryUpdateModel绑定后,可以看到该模型。正确的值被分配给模型的属性。

它只是永远不会到数据库。

AccessFolderPart:

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 AccessFolderPartDriver的

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); 

    } 

自从星期五以来,我一直坚持这一点。我之前创建了自定义类型,从来没有任何问题。我看不出我在这里做错了什么。

更新 - 新增内容Handler类

这里的处理程序的一行:

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); 
       } 
      }