2013-07-31 1 views
0

오차 필드에 하나의 필드 (GUID) 만 포함하는 사용자 정의 필드를 만들었습니다. 따라서 컨텐트 유형에 추가 될 때마다 "편집자"템플리트에 새 GUID가 표시됩니다. 이 형식은 콘텐츠 형식이 포함 된 양식을 제출할 때를 제외하고 양식이 다른 GUID로 게시됩니다. 면밀히 살펴보면 편집기 (POST) 필드의 드라이버가 필드의 viewModel을 업데이트하지 않는다는 것을 알았습니다.오차드 사용자 정의 필드가 올바르게 게시되지 않음

디버깅을위한 제안 사항이나 요령이 있으십니까? 여기

내 코드

protected override DriverResult Display(
      ContentPart part, Fields.UniqueIDField field, 
      string displayType, dynamic shapeHelper) 
     { 

      return ContentShape("Fields_String", // this is just a key in the Shape Table 
       GetDifferentiator(field, part), 
       () => 
       { 
        var settings = field.PartFieldDefinition.Settings.GetModel<UniqueIdFieldSettings>(); 
        var value = field.Id; 


        var viewModel = new UniqueIdFieldViewModel 
        { 
         Id = value 
        }; 

        return shapeHelper.Fields_String(// this is the actual Shape which will be resolved (Fields/DateTime.cshtml) 
         Model: viewModel); 
       } 
      ); 
     } 

     protected override DriverResult Editor(ContentPart part, 
               Fields.UniqueIDField field, 
               dynamic shapeHelper) 
     { 

      var settings = field.PartFieldDefinition.Settings 
           .GetModel<UniqueIdFieldSettings>(); 
      var value = Guid.NewGuid().ToString(); 
      field.Id = value; 

      var viewModel = new UniqueIdFieldViewModel 
      { 
       Id = value, 
      }; 

      return ContentShape("Fields_String_Edit", 
       () => shapeHelper.EditorTemplate(
          TemplateName: TemplateName, 
          Model: viewModel, 
          Prefix: GetPrefix(field, part))); 
     } 

     protected override DriverResult Editor(ContentPart part, 
               Fields.UniqueIDField field, 
               IUpdateModel updater, 
               dynamic shapeHelper) 
     { 

      var viewModel = new UniqueIdFieldViewModel();   
      if (updater.TryUpdateModel(viewModel, 
             GetPrefix(field, part), null, null)) 
      { 
       field.Id = viewModel.Id; 
      } 

      return Editor(part, field, shapeHelper); 
     } 
+1

하지만 편집기 메서드에서 매번 * 값을 재설정하고 있습니다. –

+0

Editor-GET 메서드에서 새 GUID를 얻고 Editor-POST에서 모델을 업데이트하고 있습니다. 나에게 옳은 길을 제안 해 줄 수 있니? – Subhasis

+1

필드의 편집 템플리트를 확인하십시오. – mberacochea

답변

1

당신은 값 자체 실행의 끝마다 POST 편집기 방법으로 호출되는 GET 편집기 방법의 모든 시간을 재설정하는 몇 줄 수 있습니다. 이미 값이없는 경우에만 새 값으로 설정하십시오.