「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
public class AccessFolderPartRecord : ContentPartRecord
{
public virtual string Name { get; set; }
public virtual List<ContentAccessFolderRoleRecord> DownloadRoles { get; set; }
}
AccessFolderPartDriver の関連部分
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 クラスを追加
ハンドラーの 1 行を次に示します。
public class AccessFolderPartHandler : ContentHandler
{
public AccessFolderPartHandler(IRepository<AccessFolderPartRecord> repository)
{
Filters.Add(StorageFilter.For(repository));
}
}