콘텐츠 유형에는 날짜, 시간, 제목 및 서식있는 텍스트 설명이 포함 된 여러 지점으로 구성된 일정 목록을 추가 할 수있는 여러 부분이 있습니다. 즉, 1-n 관계입니다. 이 부분은보기 모델을 사용하여 객체 목록을 제출합니다. 사용자는 제출하기 전에 일정에 시간을 할애 할 수 있으며 다른 부분이 유효성을 확인하지 못하면 현재 일정에 대한 모든 작업이 느슨해 질 수 있습니다. 페이지를 다시로드 할 때 새로운보기 모델이 만들어지기 때문에 예기치 않은 현상이 아닙니다.Orchard는 드라이버의 뷰 모델을 지속합니다.
그러나 내가 도와 드릴 수는 없지만 부품의 정보가 계속 유지되며보기 모델에서 데이터를 유지할 수있는 방법이 있었으면합니다.
드라이버, 다음의 메소드가 있습니다
var model = new AgendaViewModel();
updater.TryUpdateModel(model, Prefix, null, null);
에 편집기를로드 할 때 수행 할 수 있습니다 "유사한"있나요 :
protected override DriverResult Editor(AgendaPart part, dynamic shapeHelper)
{
return ContentShape("Parts_Agenda_Edit",
() => shapeHelper.EditorTemplate(
TemplateName: "Parts/Agenda",
Model: BuildEditorViewModel(part),
Prefix: Prefix));
}
protected override DriverResult Editor(AgendaPart part, IUpdateModel updater, dynamic shapeHelper)
{
var model = new AgendaViewModel();
updater.TryUpdateModel(model, Prefix, null, null);
if (part.ContentItem.Id != 0)
{
_agendaService.CreateUpdateAgenda(model, part.ContentItem);
}
return Editor(part, shapeHelper);
}
이 같은 뷰 모델을 얻을 제출하는 경우 기존의 뷰 모델 데이터를 가져 오겠습니까? 그렇지 않다면 다른 제안도 환영합니다.
이 예제는 컨트롤러 용이고, ContentPartDriver에서 사용 가능한 TempDataDictionary가 있습니까? –
필터에서 액세스 할 수 있습니다. 컨트롤러 자체의 속성이 필터 자체의 속성입니다. 그런 다음 드라이버에서 액세스 할 수있는 현재 요청의 항목 또는 레이아웃의 동적 속성에 해당 내용을 복사 할 수 있습니다. 세션은 작동 할 수있는 또 다른 유형의 저장소이며 현재 HTTP 컨텍스트를 통해 어디에서나 액세스 할 수 있습니다. –